Linkify is a zero-dependency JavaScript plugin for finding links in plain-text and converting them to HTML <a> tags.
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
assets Fixing download links on demo page Dec 15, 2013
plugins Tickets plugin (#156) Aug 17, 2016
src mentions: Allow mentions to contain an at sign for federated mentions ( Jan 29, 2019
tasks Update dependencies (#243) Sep 5, 2018
templates Linkify global along with LinkifyReact Sep 2, 2016
test Update dependencies and build matrix; drop official IE8 support (#260) Jan 29, 2019
.babelrc Drop deprecated babel-preset-es2015-loose dependency Oct 18, 2016
.editorconfig Automated browser test fixes (#224) Mar 3, 2018
.eslintrc Automated browser test fixes (#224) Mar 3, 2018
.gitignore .gitignore file is updated for IntelliJ (#258) Jan 29, 2019
.npmignore NPM ignore code coverage Jan 29, 2019
.travis.yml Stop testing on Node 6 Jan 29, 2019
CHANGELOG.md Update note about Node.js support Jan 29, 2019
CONTRIBUTING.md Development upgrades (#153) Aug 13, 2016
LICENSE Update LICENSE Mar 6, 2018
README.md Add Yarn install and advise to ignore optional Jan 29, 2019
element.js Build upgrades (#131) Apr 25, 2016
gulpfile.js Update dependencies (#243) Sep 5, 2018
html.js Build upgrades (#131) Apr 25, 2016
index.js Switching to ES6 Module system Jan 12, 2015
jquery.js Build upgrades (#131) Apr 25, 2016
package-lock.json v2.1.8 Jan 29, 2019
package.json v2.1.8 Jan 29, 2019
polyfill.js IE8 Support (#137) May 16, 2016
react.js v2.1.0 Sep 2, 2016
run-tests.sh Update dependencies and build matrix; drop official IE8 support (#260) Jan 29, 2019
string.js Build upgrades (#131) Apr 25, 2016
tlds.js Update tlds.js (#213) Mar 3, 2018

README.md

Linkify

npm version Build Status Sauce Test Status Coverage Status

Build Status

Linkify is a small yet comprehensive JavaScript plugin for finding URLs in plain-text and converting them to HTML links. It works with all valid URLs and email addresses.

A build repository is maintained here.

Jump to

Features

  • Accuracy
    Linkify uses a (close to) complete list of valid top-level domains to ensure that only valid URLs and email addresses are matched.
  • Speed
    Each string is analyzed exactly once to detect every kind of linkable entity
  • Extensibility
    Linkify is designed to be fast and lightweight, but comes with a powerful plugin API that lets you detect even more information like #hashtags and @mentions.
  • Small footprint
    Linkify and its jQuery interface clock in at approximately 15KB minified (5KB gzipped) - approximately 50% the size of Twitter Text
  • Modern implementation
    Linkify is written in ECMAScript6 and compiles to ES5 for modern JavaScript runtimes.
    • Linkify is compatible with all modern browsers, as well as Internet Explorer 9 and up.

Demo

Launch demo

Installation and Usage

View full documentation.

Download the latest release, or install via NPM

npm install --no-optional linkifyjs

or Yarn

yarn add --ignore-optional linkifyjs

or Bower

bower install linkifyjs

Quick Start

Add linkify and linkify-jquery to your HTML following jQuery:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="linkify.min.js"></script>
<script src="linkify-jquery.min.js"></script>

Note: A polyfill is required for Internet Explorer 8.

Find all links and convert them to anchor tags

$('p').linkify();
$('#sidebar').linkify({
    target: "_blank"
});

Find all links in the given string

linkify.find('Any links to github.com here? If not, contact test@example.com');

Returns the following array

[
  {
    type: 'url',
    value: 'github.com',
    href: 'http://github.com'
  },
  {
    type: 'email',
    value: 'test@example.com',
    href: 'mailto:test@example.com'
  }
]

See all available options

Node.js/Browserify

var linkify = require('linkifyjs');
require('linkifyjs/plugins/hashtag')(linkify); // optional
var linkifyHtml = require('linkifyjs/html');

Example string usage

linkifyHtml('The site github.com is #awesome.', {
  defaultProtocol: 'https'
});

Returns the following string

'The site <a href="https://github.com">github.com</a> is <a href="#awesome">#awesome</a>.'

AMD

<script src="r.js"></script>
<script src="linkify.amd.js"></script>
<script src="linkify-plugin-hashtag.amd.js"></script> <!-- optional -->
<script src="linkify-element.amd.js"></script>
require(['linkify'], function (linkify) {
  linkify.test('github.com'); // true
  linkify.test('github.com', 'email'); // false
});

require(['linkify-element'], function (linkifyElement) {

  // Linkify the #sidebar element
  linkifyElement(document.getElementById('sidebar'), {
    className: 'my-link'
  });

  // Linkify all paragraph tags
  document.getElementsByTagName('p').map(linkifyElement);
});

Note that if you are using linkify-jquery.amd.js, a jquery module must be defined.

Browser globals

<script src="react.js"></script>
<script src="react-dom.js"></script>
<script src="linkify.js"></script>
<script src="linkify-react.js"></script>
linkify.test('dev@example.com'); // true

ReactDOM.render(
  <Linkify options={{ignoreTags: ['style']}}>
    Check out soapboxhq.com it is great!
  </Linkify>,
  document.getElementById('#container');
);

Browser Support

Linkify works on all modern brwosers.

Linkify natively supports Internet Explorer 9 and above. Internet Explorer 8 is unofficially supported with a polyfill.

You can use either es5-shim (sham also required) or the provided linkify-polyfill.js:

<script src="jquery.js"></script>

<!--[if IE 8]>
<script src="linkify-polyfill.js"></script>
<![endif]-->
<script src="linkify.js"></script>
<script src="linkify-jquery.js"></script>

Node.js Support

Linkify is tested on Node.js 8 and up. Older versions are unofficially supported.

Downloads

Download the latest release or clone the build repository.

linkify (required)
.min.js · .js · .amd.min.js · .amd.js

Plugins (optional)

Interfaces (recommended - include at least one)

API Documentation

View full documentation at soapbox.github.io/linkifyjs/docs/.

Caveats

The core linkify library (excluding plugins) attempts to find emails and URLs that match RFC specifications. However, it doesn't always get it right.

Here are a few of the known issues.

  • Non-standard email local parts delimited by " (quote characters)
    • Emails with quotes in the localpart are detected correctly, unless the quotes contain certain characters like @.
  • Slash characters in email addresses
  • Non-latin domains or TLDs are not supported (support may be added via plugin in the future)

Contributing

Check out CONTRIBUTING.md.

License

MIT

Authors

Linkify is built with Love™ and maintained by SoapBox Innovations.