Skip to content
Switch branches/tags
Go to file
Cannot retrieve contributors at this time

Linkify Changelog


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


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


  • Add linkifyjs ES6 module build


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


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



  • 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


  • 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'
    // After
    import * as linkify from 'linkifyjs'
    import 'linkifyjs/plugins/hashtag'


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


  • 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


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


  • 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)


  • React plugin compatibility updates


  • 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)


  • Links in angle brackets (#166)


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


  • Detect additional whitespace characters (#163)



  • 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.



  • 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)


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


  • 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)


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


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


  • 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