Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

linkifyjs

nfrasser8mMIT4.2.0TypeScript support: included

Find URLs, email addresses, #hashtags and @mentions in plain-text strings, then convert them into HTML links.

autolink, email, hashtag, html, jquery, link, mention, react, twitter, url

readme

linkifyjs

npm version

Core Linkify JavaScript library. Use Linkify and its related packages to detect URLs, email addresses and more in plain-text strings and convert them to HTML <a> anchor tags.

Installation

Install from the command line with NPM

npm install linkifyjs

Import into your JavaScript with require

const linkify = require('linkifyjs');

or with ES modules

import * as linkify from 'linkifyjs';

Separate packages are available for each of the following features:

Usage

Read the full documentation.

License

MIT

changelog

Linkify Changelog

v4.2.0

  • Correctly sanitize object replacement character by treating as whitespace
  • Avoid detecting invalid URLs with numbers around boundaries
  • Prevent delimiter apostrophes from being included in URLs
  • Correctly interpret \r\n as newline character
  • Correctly interpret emoji followed by # sign
  • Fix support for domain names with multiple hyphens
  • Fix parsing for magnet links

v4.1.4

  • Add support for full width middle dot in hashtag plugin
  • Development updates for newest Node.js versions

v4.1.3

  • Fix HTML entity & symbol double-encoding in linkify-html
  • Support for full-width brackets, full-width less-than/greater-than signs and corner bracket as delimiters

v4.1.2

  • Ensure linkify.find respects validate option

v4.1.1

  • Slightly simpler TLDs encoding/parsing
  • Fix jsdoc in linkify-react
  • Improved parsing of URLs with symbols
  • Ensure function options get called with unformatted href

v4.1.0

  • Drop support for Safari 10
  • Reduce core bundle file size by ~30%
  • Restore support for email address with scheme local part
  • Allow hashtags with emojis

v4.0.2

  • Fix email address detection with domains containing numbers

v4.0.1

  • Restore nl2br option for linkify-html
  • Fixed duplicate key warning in linkify-react with multiple children

v4.0.0

BREAKING CHANGES

  • Removed deprecated linkifyjs/string, linkifyjs/html, linkifyjs/plugins/* packages. Use linkify-string, linkify-html and linkify-plugin-* instead.
  • Refactored scanner internals break custom link plugins created with Linkify v3
  • Links that begin with mailto: now have type url instead of email
  • Drop official IE 11 support

Added

  • linkify-plugin-ip plugin for detecting IPv4 and IPv6 addresses
  • linkify-plugin-keyword plugin for detecting arbitrary keywords
  • linkify.find() function accepts an options argument for output formatting
  • New render option to override link rendering
  • Second optionalSlashSlash argument for registerCustomProtocol to allow links that don't require // after scheme:
  • Link token methods toFormattedString(options), toFormattedHref(options) and toFormattedObject(options) that accept a linkify.Options object
  • More granular scanner tokens for improved plugin flexibility
  • linkify-react: New as property (alias for tagName)

Fixed

  • Improved link detection with mixed languages
  • Consistent option availability across interfaces (including truncate)
  • linkify-html: Improved HTML entity parsing

v3.0.5

  • Fix potential Cross-Site Scripting issue when using linkify-html

v3.0.4

  • Expose ES6 modules with "module" field in package.json

v3.0.3

  • Add linkifyjs ES6 module build

v3.0.2

  • Correctly detect hashtags with underscores
  • Fix plugin import bug
  • Fix linkify-string and linkify-html type declarations

v3.0.1

  • Fix React component type declarations
  • Include LICENSE file in all published packages

v3.0.0

BREAKING CHANGES

  • React, jQuery and Element interfaces moved to dedicated packages at linkify-react,linkify-jquery and linkify-element respectively:
  • Remove default class="linkified" from all discovered links. Opt back in by setting the className option:
    linkifyStr(str, { className: 'linkified' });
  • Remove default target="_blank" attribute for discovered URLs. Opt back in by setting the target option:
    linkifyHtml(str, {
      target: (href, type) => type === 'url' && '_blank',
    });
  • React component: Remove outer <span> tag wrapper in favour of tag-less React.Fragment for React >=16. To opt back-in, set tagName='span':
    <Linkify tagName="span">{content}</Linkify>
  • AMD module interface is no longer provided. Use an ESM bundler instead.
  • Plugins imported after linkify is called on a string for the first time will not longer work. Import all plugins before calling a linkify core or interface function.
  • Custom plugin API is not compatible with previous API in Linkify v2
  • Dropped support for Internet Explorer versions 9 and 10. IE11 is still supported
  • Dropped support for React versions <15

Deprecations

  • Use dedicated packages linkify-string and linkify-html instead of linkifyjs/string and linkifyjs/html. The embedded packages will be removed in v4.0
  • Use dedicated plugin packages linkify-plugin-[PLUGIN] instead of linkifyjs/plugin/[PLUGIN]. The embedded packages will be removed in v4.0

All Changes

  • Full Internationalized Domain (IDN) and Emoji domain support 🇺🇳🌍✈️🎉💃! Detect URLs, #hashtags and @mentions in any language
  • ~10x faster startup; ~4x faster combined startup + first run
  • Custom protocols with linkify.registerCustomProtocol('protocol')
  • Modernized codebase and build system
  • Add new rel option at top level as an alternate way of including it in attributes
  • New and improved plugin API
  • TypeScript definitions included in published packages
  • linkify.find() output includes start and end indexes for where in the string a link was found
  • Plugins no longer need to be called on linkify after import

    // Before
    import * as linkify from 'linkifyjs';
    import hashtag from 'linkifyjs/plugins/hashtag';
    hashtag(linkify);
    
    // After
    import * as linkify from 'linkifyjs';
    import 'linkifyjs/plugins/hashtag';

v2.1.9

  • Move optional dependencies to peerdependencies (#282)
  • Fix npm install displays vulnerabilities. (#265)
  • Fix typo (#275)

v2.1.8

  • Allow mentions with inner @ sign for federated mentions - thanks @juliushaertl!
  • Drop official support for Internet Explorer 8 and Node.js 6 (still supported unofficially but may break in future releases)
  • Update dev dependencies

v2.1.7

  • Update dependencies (#243)
  • Ignore .babelrc file (854e6fc)

v2.1.6

  • Fix a bug where unique element IDs aren't unique (#215)
  • Update tlds.js (#213)
  • Automated browser test fixes (#224)
  • Add partialProtocolMailtoStates to domainStates (#210)
  • Use Object.defineProperty to extend String prototype so that 'linkify' function is not enumerable (#197)
  • Allow null overrides in options for target and className (#189)

v2.1.5

  • React plugin compatibility updates

v2.1.4

  • Add explicit support for mailto: addresses (#186)
  • Add support for mentions containing dots (#185)
  • URL followed by &nbsp; now works as expected in linkify-html (#184)
  • Small dependency updates (#183)
  • Drop deprecated babel-preset-es2015-loose dependency (#172)
  • Web workers support (#168)

v2.1.3

  • Links in angle brackets (#166)

v2.1.2

  • Single quotes should be treated as punctuation (#165)

v2.1.1

  • Detect additional whitespace characters (#163)

v2.1.0

BREAKING CHANGES

  • The dist/jquery.linkify.js 1.x legacy browser files have been permanently removed from the release bundle.
    • Use linkify.js and linkify-jquery.js instead.
  • The deprecated newLine option from linkify 1.x has been completely removed.

Features

Deprecations

  • The linkAttributes option is deprecated in favour of just attributes.
  • The linkClass option is deprecated in favour of className.
  • The default .linkified class is deprecated and will be fully removed in a future release.

To maintain compatibility with versions >= 2.1, make sure options objects include these properties instead of linkAttributes and linkClass

All Changes

  • Build optimizations to make compiled AMD payload smaller
  • Bugfix in quick-es3 task
  • Make better use of ES6 modules and rollup
  • Tickets plugin (#156)
  • Additional Mentions features, enhancements, and tests (#155)
  • Mentions plugin (#111)
  • Revamped options utility (#154)
  • Linkify React Interface (#150)
  • Development upgrades (#153)

v2.0.5

  • Correct trailing symbol parsing (#149)
  • Linkify element fixes (#148)

v2.0.4

  • Optimize class code to reduce file size (#147).
  • Update test and dev dependencies
  • Allow uglify to mangle properties, except for the specified ones (#146)
  • Updated tlds.js (#121)

v2.0.3

  • Fixing element interface invalid DOM node error (#141)

v2.0.1

  • Updated build system and development dependencies
  • IE8 Support
  • Internal API updates

v2.0.0

  • New link-detection technique based on lexicographical analysis via two-stage scanner - essentially regexp with more flexibility.
  • Faster, less destructive DOM manipulation.
  • Node.js API via var linkify = require('linkifyjs');
  • Internal plugin system so you can require only features you need. e.g., require('linkifyjs/plugins/hashtag')(linkify);
  • Browser modules (Browserify, AMD)
  • Mocha Unit tests
  • ES6 Implementation
  • Updated documentation
  • Repository name change