emits <a id="…"></a> tags for deep linking

Generate HTML anchor IDs

Drop named <a id> targets into your Markdown so you can deep-link to any section — works even where GitHub's auto-slug doesn't reach.

HTML Anchors
Input
86 B
7 lines
Output
177 B
7 lines
Status
ready
live
Ratio
2.06×
out/in
input · sections
output · anchors
<a id="getting-started"></a>
<a id="installation"></a>
<a id="api-reference"></a>
<a id="configuration"></a>
<a id="troubleshooting"></a>
<a id="faq"></a>
<a id="changelog"></a>
Quick Start

How to add HTML anchors

Sluggifies each line into a URL-safe id and wraps it in <a id="…"></a>. Drop the output above each section in your Markdown.

  1. 01

    List section names

    One section title per line.

    Parsing runs through marked with GFM extensions enabled — tables, task lists, strikethrough, and fenced code blocks all match GitHub’s rendering.

    inputGFMmarkedCommonMarklive
    input · markdowntitles · GFM
    Getting Started
    loaded · GFMGFM · ready
  2. 02

    Slugify

    Lowercased, dashes for spaces, punctuation removed.

    Soft-break behaviour is configurable: by default a single newline becomes a space (CommonMark), toggle on for chat-style <br> insertion.

    slugsoft-breaksoptionsconfiglive
    out · optionsid · live
    getting-started
    options applied · livelive
  3. 03

    Anchor markup

    Each line becomes <a id="…"></a>.

    The preview is scoped under a .mde class so its CSS doesn’t bleed into the rest of the page. Output HTML is whitespace-controlled for clean diffs.

    htmlpreviewscoped CSSrenderstable
    check · renderedhtml · ready
    <a id="..."></a>
    rendered · liverendered
  4. 04

    Deep link

    Link with #id from anywhere — GitHub, docs site, README.

    Export covers both raw Markdown and rendered HTML; downloads stream as text/markdown or text/html via Blob + object URL.

    linkclipboard.md.htmlblob
    ✓ · exporteddeep · done
    ✓ #section
    linkable · ready to shipsuccess
Pro tips

Author Markdown that renders everywhere

GFM is the safe default

GitHub-Flavored Markdown is the de-facto baseline (tables, task lists, strikethrough). CommonMark is stricter but ubiquitous as a fallback.

Soft-break behaviour varies

A single newline is a space in CommonMark, a <br> in GFM. Toggle soft breaks when source matters.

Escape inside code fences

Backticks inside fenced blocks need a longer fence — three becomes four. Use ~~~ if your content has many backticks.

Anchors are slugified

GitHub lowercases, strips punctuation, and joins with hyphens. Duplicate headings get -1, -2 suffixes.

Tables need a header row

The dash row sets alignment (:---, :-:, ---:). Use Table Aligner for diff-friendly columns.

Front matter is YAML

Triple-dash blocks at the top of files are parsed by static-site generators. Use the Front-Matter Validator to catch syntax errors.

Use Cases

When to use explicit anchors

Reliable deep links without GitHub's auto-slug surprises.

Stable URLs

Slug stays even if you rename the heading later. Render path uses marked with GFM extensions enabled (tables, task lists, strikethrough, autolinks), so what you preview matches what GitHub publishes bit-for-bit. Soft-break behaviour is configurable for chat-style vs prose Markdown.

GFM-compliant

Non-heading anchors

Link to non-heading spots — tables, lists, callouts. Pairs cleanly with the Markdown Cheatsheet for syntax you can't quite remember — callout blocks, footnotes, definition lists. Output stays diff-friendly so style-only changes don't drown out real edits in PRs.

GitHub-perfect

Cross-platform

GitHub, GitLab, Bitbucket all support HTML anchors. Cross-platform safe: anchors, code fences, and tables behave identically on GitHub, GitLab, Bitbucket, and Gitea. Heading-anchor slugs follow GitHub's lowercase-and-hyphenate rules so deep links survive a docs migration.

diff-friendly

Docs systems

MkDocs, Docusaurus, Hugo — all honor HTML anchors. No server roundtrip — perfect for proprietary content you can't paste into a public tool. The full marked + GFM bundle ships with the page, so it works offline once loaded.

render-stable

Legacy redirects

Add old slugs so legacy bookmarks keep working. Front matter (YAML / TOML / JSON) passes through unchanged so static-site pipelines (Jekyll, Hugo, Astro, Eleventy) read it correctly. Pair with the Front-Matter Validator to catch syntax errors before deploy.

cross-platform

Section sharing

Share /#install-on-mac links from one canonical URL. Output is reproducible: identical input always produces identical Markdown, so doc-generation scripts can rely on it for snapshot tests and embedded into release workflows.

SEO-friendly
FAQ

Frequently asked questions

Yes. GitHub renders <a id> tags from Markdown source unchanged.
Auto-slugs change if you rename a heading. Explicit anchors keep links stable across edits.
Identical lines produce identical IDs. Browsers jump to the first match — rename to disambiguate.
Non-ASCII characters are stripped during slugify. For Unicode-friendly slugs, edit the IDs manually after generating.
No. Slugification runs locally — nothing is uploaded.
Suggest a tool

Something missing?

Tell us what you need. We ship the top requests every two weeks.

Sent straight to the maintainers · no account needed
47 in queue·8 shipped this month
Request queued. Thanks!