PERFORMANCE
Benchmarks
Performance comparisons against popular link preview libraries. All data sourced from npm and bundlephobia.
Bundle sizes: Approximate gzipped size from bundlephobia
Parse time: HTML parsing only, excludes network latency
Edge support: Cloudflare Workers, Vercel Edge, Deno Deploy
BUNDLE SIZE (GZIPPED)
DEPENDENCIES
PARSE TIME (MS)
Average time to parse HTML and extract metadata. Lower is better.
EDGE RUNTIME
Edge runtime support requires no Node.js-specific APIs like fs, path, or http. Libraries using Cheerio or similar DOM parsers typically don't work on edge runtimes.
openlink
✓
unfurl.js
—
link-preview-js
—
open-graph-scraper
—
metascraper
—
COMPARISON
Library details
| Library | Version | Notes |
|---|---|---|
| openlink | 0.1.0 | Zero dependencies, pure JS |
| unfurl.js | 6.4.0 | oEmbed, Twitter Cards, Open Graph |
| link-preview-js | 4.0.0 | Cross-fetch dependency |
| open-graph-scraper | 6.10.0 | Uses Cheerio for parsing |
| metascraper | 5.49.0 | Modular, requires plugins |
METHODOLOGY
How we benchmark
Bundle sizes are approximate gzipped sizes from bundlephobia.com. Actual sizes may vary based on tree-shaking and bundler configuration.
Parse time measures only HTML parsing and metadata extraction, excluding network request time. Each library parses the same pre-fetched HTML content.
Edge runtime compatibility is determined by checking for Node.js-specific API usage. Libraries relying on Cheerio, jsdom, or similar DOM implementations typically don't work on edge runtimes.
All data is sourced from npm and the respective package documentation. Run your own benchmarks for production decisions.
$ git clone github.com/visible/openlink
$ cd openlink
$ bun run bench