markdown-it/linkify-it is tracked by TopGit as an open-source project, with 731 stars on GitHub, written primarily in TypeScript. Links recognition library with full unicode support
Snapshot summary built from the project's own GitHub metadata — there's no written TopGit review yet. The page will update automatically when a full review is published.
WHY NO REVIEW YET
TopGit writes full reviews for the most-starred, most-requested repositories. This page is a snapshot until then — see the READ ME tab for the original README in full.
fuzzyLink - recognize URL-s without http(s):// head. Default false.
fuzzyIP - allow IPs in fuzzy links above. Can conflict with some texts
like version numbers. Default false.
fuzzyEmail - recognize emails without mailto: prefix. Default true.
tlds - allowed TLDs list for fuzzy links. Replaces the default list
when set.
--- - set true to terminate link with --- (if it's considered as long dash).
Default false.
rebuilder - custom REBuilder instance for patched regex fragments.
urlAuth - recognize authentication data in URLs. Default false.
maxLength - maximum link length. Default 10000.
.test(text)
Searches linkifiable pattern and returns true on success or false on fail.
.testSchemaAt(text, name, offset)
Similar to .test() but checks only specific protocol tail exactly at given
position. Returns length of found pattern (0 on fail).
.match(text)
Returns Array of found link matches or null if nothing found.
Each match has:
schema - link schema, can be empty for fuzzy links, or // for
protocol-neutral links.
index - offset of matched text
lastIndex - index of next char after mathch end
raw - matched text
text - normalized text
url - link, generated from matched text
.matchAtStart(text)
Checks if a match exists at the start of the string. Returns Match
(see docs for match(text)) or null if no URL is at the start.
Doesn't work with fuzzy links.
.tlds(list[, keepOld])
Load (or merge) new tlds list. Those are needed for fuzzy links (without schema)
to avoid false positives. By default:
2-letter root zones are ok.
biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф are ok.
encoded (xn--...) root zones are ok.
If that's not enough, you can reload defaults with more detailed zones list.
.add(key, value)
Add a new schema to the schemas object.
key is a link prefix (usually, protocol name with : at the end, skype:
for example). linkify-it makes sure that prefix is not preceded with
alphanumeric char.
value is a rule to check tail after link prefix:
Object
validate - validator function which, given arguments text, pos, and
self, returns the length of a match in text starting at index pos.
pos is the index right after the link prefix. self can be used to
access the linkify object to cache data.
normalize - optional function to normalize text & url of matched result
(for example, for twitter mentions).
To disable an existing rule, use .add(key, null).
.set(options)
Override default options. Missed properties will not be changed.
Yes — markdown-it/linkify-it ships under the MIT license, which makes its source code freely readable (and, depending on license terms, forkable and reusable). Source: github.com/markdown-it/linkify-it.
What is markdown-it/linkify-it?
markdown-it/linkify-it (markdown-it/linkify-it) is a TypeScript project on GitHub. From the project's own README: Links recognition library with full unicode support
Where do I read more about markdown-it/linkify-it?
This TopGit page is a snapshot — the READ ME tab shows the project's own README content (links stripped, images preserved). The GitHub repository at github.com/markdown-it/linkify-it is the definitive source.
Read full README in the tab above.
Is linkify-it worth your time?
ChatGPT, Claude and Perplexity can all read this page. Ask one of them what it makes of linkify-it.