How to rewrite inline links as numbered references
- Step 1Open the converter — Go to /markdown-tools/md-footnote-linker. Copy is processed in your browser; nothing is uploaded.
- Step 2Paste the copy — Paste the Markdown or drop one
.mdfile (acceptsMultiple is false — one document per run). - Step 3Run — Click Run. No options to set — the rewrite is a single deterministic pass.
- Step 4Check the markers — Every inline
[text](https://url)is now[text][n]; duplicates share a number; footnotes and code are unchanged. - Step 5Review the link block — The
[n]: urlblock sits at the bottom — each unique URL once, in first-seen order. Edit any URL here to update all uses. - Step 6Export the copy — Copy or download the
.mdand paste it back into your CMS or editor.
Editorial rewrite rules
What the single pass does to each construct an editor commonly encounters. The matcher operates on prose only; code fences are excluded.
| Construct | Action | Editorial note |
|---|---|---|
[text](https://host/a) | Rewritten → [text][n] | The intended case — inline link becomes a reference. |
[text](http://host) | Rewritten → [text][n] | Plain http is handled the same as https. |
[text](https://host "tooltip") | Rewritten; tooltip dropped | Tooltip/title text is removed from the output. |
[text](https://typo.cmo) | Rewritten as-is | A typo'd URL is collected verbatim — the tool does not fix typos. |
[^2] / [^2]: def | Left as-is | Footnote syntax (even malformed) is not touched. |
[text](#anchor) / [text](rel.md) | Left as-is | Anchors and relative links are not collected. |
| Link inside a ``` fence | Left as-is | Example code is preserved verbatim. |
Plan limits
Character and byte limits are enforced independently. Long-form copy can hit the character cap under the size cap.
| Plan | Max file size | Max characters | Files per run |
|---|---|---|---|
| Free | 1 MB | 500,000 | 1 |
| Pro | 10 MB | 5,000,000 | 10 |
| Pro-media | 50 MB | 20,000,000 | 50 |
| Developer | 500 MB | Unlimited | Unlimited |
Cookbook
Editorial before/after pairs. Each shows the body rewrite plus the maintainable link block. URLs are illustrative.
Inline link becomes maintainable
The core editorial win: the URL moves to the bottom, where a single edit updates every in-text use.
Before: Our [style guide](https://corp.com/style) covers this. After: Our [style guide][1] covers this. [1]: https://corp.com/style
Same URL, different wording
Two phrasings of the same link share number 1 — change the URL once and both follow.
Before: See the [policy](https://corp.com/p) and the [updated policy](https://corp.com/p). After: See the [policy][1] and the [updated policy][1]. [1]: https://corp.com/p
Typo'd URL collected verbatim
The tool does not validate or fix URLs — a typo in the domain is carried straight into the block for you to correct.
Before: Download the [report](https://exmaple.cmo/r). After: Download the [report][1]. [1]: https://exmaple.cmo/r
Footnote syntax left untouched
Even malformed [^id] syntax is preserved — this tool does not repair footnotes, only collects links.
Before: A claim.[^a] And a link [doc](https://d.org). [^a : missing close bracket on the marker After: A claim.[^a] And a link [doc][1]. [^a : missing close bracket on the marker [1]: https://d.org
Tooltips are stripped
If your copy used link titles for tooltips, note they are removed — re-add them manually if your CMS needs them.
Before: Read the [FAQ](https://corp.com/faq "Frequently asked"). After: Read the [FAQ][1]. [1]: https://corp.com/faq
Edge cases and what actually happens
It does not repair footnote IDs or syntax
Not supportedThe tool does not detect typo'd [^id] references, mismatched IDs, or malformed footnote markers, and it does not match references to definitions. It rewrites inline [text](url) links into reference-style notation only.
Typo'd URLs are not fixed
By designA misspelled domain or path is collected exactly as written. The tool performs no URL validation or correction — fixing typos is your editorial call once they are gathered in the block.
Output is reference-style links
By designThe result is [text][n] plus a [n]: url block — CommonMark reference links that render as normal hyperlinks, not [^n] footnotes.
Link titles/tooltips are dropped
DroppedAn optional "title" after the URL is matched and removed. The reference block contains only bare URLs.
Bracket in link text breaks the match
Not matchedAnchor text with a ] inside (e.g. [a [b]](https://x.org)) fails the pattern and is left inline. Remove or escape inner brackets first.
Only http(s) links are rewritten
PreservedRelative links and in-page anchors are not matched and remain inline. Only http:// and https:// URLs are collected.
Duplicate URLs
DeduplicatedIdentical URLs always share one number regardless of anchor text, so the block lists each URL once.
Code fences excluded
PreservedLinks inside ``` blocks are skipped, keeping documentation examples verbatim.
No links present
UnchangedCopy with no http(s) inline links is returned identical, with no block appended.
Copy over the character cap
RejectedLong-form copy can exceed the Free 500,000-character cap under 1 MB. The cap is independent of file size; upgrade or split with /markdown-tools/md-splitter.
Frequently asked questions
Does it fix broken footnote references?
No. It does not repair [^id] footnote syntax, detect typo'd IDs, or match references to definitions. It converts inline [text](url) links into reference-style notation. Footnote repair is not a feature.
Will it suggest corrections for a typo'd URL?
No. A typo'd URL is collected verbatim into the reference block. The tool does no validation or suggestion — correcting it is an editorial decision.
What link syntax does it accept?
Inline links of the form [text](http://...) or [text](https://...), with an optional (and discarded) "title". Other schemes and relative links are ignored.
Does it handle inline footnotes like ^[text]?
No. Pandoc inline footnotes are not links and are not matched; they are preserved unchanged.
Why convert to reference style at all?
Maintainability and readability: URLs move out of the prose into one block, so a moved link is fixed once and the copy reads cleanly during editing.
Are duplicate URLs merged?
Yes. Every occurrence of one URL shares a number, and the block lists that URL once, in first-appearance order.
Does it change code blocks?
No. Fenced ``` blocks are excluded from the pass, so example links inside them are untouched.
Can I keep link tooltips?
Not through this tool — titles are dropped. If you need to preserve titles, use /markdown-tools/md-ref-link-converter, which keeps them as [n]: url 'title'.
Are there options?
No. It is a single deterministic transform with no UI controls.
Is my copy uploaded?
No. The transform runs in your browser; nothing is sent to a server.
How do I check the collected URLs are valid?
Run the output through /markdown-tools/md-link-validator, which flags malformed syntax, relative paths, and DNS failures (it can't detect HTTP 404 from the browser).
What if I want a fully tidied document afterward?
Follow up with /markdown-tools/md-prettifier to normalize spacing and list markers across the file for a consistent editorial finish.
Privacy first
All Markdown processing runs locally in your browser using JavaScript. No file is ever uploaded to JAD Apps servers — only metadata counters are saved for signed-in dashboard stats.