Skip to main content

extract2md

extract2md is all about “HTML in → Markdown out.” You can start from a live URL, a file on disk, or an already-loaded HTML string.

It can be used from CLI or as a Python library.

Installation

pip install extract2md

Prerequisites:

  • Python 3.10+ runtime
  • Node.js (recommended for best results; powers Readability.js content extraction)

CLI usage

1. Fetch a URL and display Markdown

extract2md https://www.iana.org/help/example-domains

2. Fetch and write to a file

extract2md https://www.iana.org/help/example-domains > sample-output.md

3. Convert previously saved HTML (files or stdin)

# convert file
extract2md sample-page.html
# or from stdin
cat sample-page.html | extract2md -

Parameters

Usage: extract2md [OPTIONS] SOURCE

Global

  • source: HTTP(S) URL, filesystem path, or - when reading HTML from stdin.

Fetching (URL sources only)

  • --ignore-robots: skip robots.txt validation (use sparingly).
  • --proxy URL: HTTP(S) proxy forwarded to httpx.
  • --timeout SECONDS: request timeout (default 30 seconds).
  • --user-agent STRING: override the default identifier.

HTML rewriting

  • --rewrite-relative-urls/--no-rewrite-relative-urls: enable or disable rewriting relative href/src attributes to absolute links (default on).
  • --base-url URL: optional base URL for rewriting relative URLs (default source).

Conversion

  • --converter NAME: choose the HTML conversion backend. Defaults to trafilatura; readability (requires Node.js) is also available.

Environment variables

  • EXTRACT2MD_NODE_PATH: Set the EXTRACT2MD_NODE_PATH environment variable to the Node.js binary (or its directory) if Readability.js cannot find node on your PATH.

Python Library usage

extract2md can also be used as a Python library.

1. Fetch a URL and get Markdown

from extract2md import fetch_to_markdown

markdown = fetch_to_markdown("https://www.iana.org/help/example-domains")

2. Convert a previously saved HTML file

from extract2md import file_to_markdown

markdown_from_file = file_to_markdown("sample-page.html")

3. Convert an HTML string you already have

from extract2md import html_to_markdown

html = "<html><body><h1>Offline HTML</h1></body></html>"
markdown_from_html = html_to_markdown(html)

# Optionally disable replacing relative links with absolute URLs
markdown_custom = html_to_markdown(
    html,
    rewrite_relative_urls=False,
)

# Or replace relative links with a custom base URL
markdown_custom = html_to_markdown(
    html,
    rewrite_relative_urls=False,
    base_url="https://example.com/docs/",
)

# Pick an alternate conversion backend (e.g., Readability)
markdown_readability = html_to_markdown(html, converter="readability")

Additional public methods

Need to store markup or run your own converter? Use fetch and skip the Markdown step entirely:

from extract2md import fetch

raw_html, content_type = fetch("https://example.com/docs")

Notes

Metadata

Release files for extract2md 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for extract2md 0.1.2
File Size Uploaded Provenance
extract2md-0.1.2.tar.gz 13.0 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for extract2md 0.1.2
File Interpreter ABI Platform
extract2md-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 25.7 kB

Release files / extract2md-0.1.2.tar.gz

Download URL extract2md-0.1.2.tar.gz
Size 13.0 kB
Tags Source
SHA-256 checksum
How to use checksums
25c6dd8f1e7d07c6e803430fdc3db06371490b712e7b05539440732def42ea9d
BLAKE2b-256 checksum
How to use checksums
d709d7b822410e78a344652d15aad3dd6d8d2a0cac848adbdce3e797de3afb6a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 19, 2025.

Transparency log

Release files / extract2md-0.1.2-py3-none-any.whl

Download URL extract2md-0.1.2-py3-none-any.whl
Size 12.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f0217dd664b2a3f7436bf66824f3790270174283049539cdab553aab25e3ac98
BLAKE2b-256 checksum
How to use checksums
1fc18c705859b511d2d3c0d345163205c2ce74e41d27337d23dc580cf22277c3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 19, 2025.

Transparency log

Security for extract2md 0.1.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for extract2md-0.1.2.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 19, 2025.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page