Skip to main content

md2gemtext - A simple library for converting Markdown to Gemtext

Introduction

md2gemtext is a small and simple library that provides code for converting Markdown into the hypertext markup language of the Gemini project.

Installation

md2gemtext is available from PyPI and can be installed with your package installer of choice.

With pip:

pip install md2gemtext

With uv:

uv add md2gemtext

Quick start

The library provides a main conversion function called markdown_to_gemtext. It is passed a string of Markdown you wish to convert, and returns the converted Gemtext string:

from md2gemtext import markdown_to_gemtext, Options

markdown = """
# Welcome

This is a paragraph with [a link](https://example.com) inside.
"""

gemtext = markdown_to_gemtext(markdown)
print(gemtext)

Output:

# Welcome

This is a paragraph with a link{a} inside.

=> https://example.com {a} a link

Options

Conversion behavior can be configured using the Options class:

from md2gemtext import Options, markdown_to_gemtext

options = Options(
    retain_inline_markup=False,   # Strip bold, italic, code markup
    space_after_paragraphs=True,  # Add empty line after paragraphs
    space_after_blockquotes=True, # Add empty line after blockquotes
    space_after_lists=True,       # Add empty line after runs of list items
    hide_front_matter=True,       # Hide/filter out front matter (default is False, which emits it)
    extra_linkable_protocols=["spartan", "finger", "nex"], # Additional protocols to linkify
    preformat_tables=True,        # Emit tables as preformatted blocks with alt-text 'table'
    html_block_handling="convert", # HTML blocks: 'convert', 'preformat', or 'striptags'
    html_inline_handling="striptags", # Inline HTML tags: 'striptags' (default) or 'keep'
)

gemtext = markdown_to_gemtext(markdown, options=options)

Command Line Interface

md2gemtext includes a command-line tool which reads from files or stdin:

# Read from file
md2gemtext document.md

# Read from stdin
cat document.md | md2gemtext

# Strip inline markup
md2gemtext --strip-inline-markup document.md

# Add extra protocols to linkify
md2gemtext --extra-protocol spartan --extra-protocol nex document.md

# Emit tables as plain aligned text instead of preformatted blocks
md2gemtext --no-preformat-tables document.md

# Set HTML block handling mode ('convert', 'preformat', or 'striptags')
md2gemtext --html-block-handling preformat document.md

# Keep inline HTML tags rather than stripping them
md2gemtext --html-inline-handling keep document.md

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

md2gemtext-0.1.0.tar.gz (10.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

md2gemtext-0.1.0-py3-none-any.whl (12.1 kB view details)

Uploaded Python 3

File details

Details for the file md2gemtext-0.1.0.tar.gz.

File metadata

  • Download URL: md2gemtext-0.1.0.tar.gz
  • Upload date:
  • Size: 10.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for md2gemtext-0.1.0.tar.gz
Algorithm Hash digest
SHA256 38d66217d018f6261eb9e525509989f870358c3780b2dbd656ce16c57b17b5ee
MD5 4b28c9277554898f4f391946cc4922c3
BLAKE2b-256 4b9ffdc6fd5d1fcada14578c5bd766dc27c6d0da7fa6eb59235a5650604b5178

See more details on using hashes here.

File details

Details for the file md2gemtext-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: md2gemtext-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 12.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for md2gemtext-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f3f9d88ec9ccb2188015204530ea6d97f528df522449635b3b4fbf78570602fe
MD5 169fec85ef116c261e6f18ff23d4cfb3
BLAKE2b-256 969ffc76954ee3bdf8e1e1c3c5d328ec02c032a8406fbb823cc3466a23ffa221

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page