A free, single-file TL;DR generator / article summarizer. Paste any long blog post, news article, newsletter, or URL and get the shortest useful summary — in English or Arabic. No install, no build step, one HTML file.
Keywords: TL;DR generator · article summarizer · text summarizer · URL summarizer · AI summary tool · read-it-later · blog post summarizer · news summarizer · Arabic summarizer · RTL · single-file web app · vanilla JavaScript · no dependencies · Claude / Anthropic API · caveman mode
Marker is a single-file, zero-dependency web tool that turns any long post, article, or URL into the shortest useful TL;DR — stripping the padding, throat-clearing, and filler so you only read what matters. Works in English and Arabic, with a bonus Caveman mode.
💡 Looking for a tool that summarizes long articles or web pages into a quick TL;DR? That's exactly what this is. Point it at a URL or paste the text, pick how short you want it, and go.
When you create the repo, add these topics to help people and search engines find it:
tldr summarizer text-summarization article-summarizer url-summarizer
ai-tools llm anthropic claude productivity reading arabic rtl
vanilla-js single-file no-dependencies web-tool read-it-later
- Paste text or a URL — paste an article body directly, or drop just a link and Marker fetches the page itself before summarizing.
- Four summary depths:
- One-liner — a single sentence with the core takeaway.
- Key points — a framing line plus 3–6 crisp bullets.
- Executive brief — a 2–3 sentence summary plus 4–8 detailed points.
- 🦴 Caveman — the shortest possible telegraphic summary (~8 words, no grammar), with its own cave-parchment styling.
- Bilingual, RTL-aware — auto-detects the source language and replies in kind (Arabic in → Arabic out), including caveman Arabic. Uses
dir="auto"throughout. - Highlighted core — the most important words in the TL;DR get an actual highlighter mark.
- "Reading time saved" stat — shows how many minutes you saved and a compression bar (e.g. "2,400 words squeezed to 85"). For URLs, the article word count is estimated by the model.
- "Cut for you" line — a wry strikethrough note naming the fluff that was removed.
- Robust copy buttons — copy the full TL;DR or a short share-ready version, with a sandbox-safe clipboard fallback (
execCommand+ Ctrl/⌘+C prompt if the browser blocks it). - Save / Share — opens the native share sheet on mobile (
navigator.share), or downloads a cleanly formatted.txtnote named after the source on desktop. - Keyboard shortcut — Ctrl/⌘ + Enter to summarize.
- Guards against pointless work — refuses to "summarize" text already under 40 words.
- Vanilla JavaScript, HTML, and CSS — no frameworks, no build step, no external CDN libraries. Everything is in one file.
- Anthropic Messages API (
https://api.anthropic.com/v1/messages, modelclaude-sonnet-4-6) for summarization. - Anthropic web search tool (
web_search_20250305) for URL mode — used to fetch page content, since browsers block direct cross-origin fetches. - Web APIs: Clipboard API (with
execCommandfallback), Web Share API, Blob download.
Note on the API: This app was built to run inside Claude's Artifacts environment, where calls to the Anthropic API are proxied and no API key is passed from the client. To run it as a standalone site (e.g. on GitHub Pages), you must supply your own key — see Setup below. Never hard-code a real key into client-side HTML that you push to a public repo.
.
├── index.html # The entire app — markup, styles, and logic in one file
└── README.md # This file
Inside Claude Artifacts: it just works — the API is handled for you.
As a standalone file (local):
- Download
index.html. - Open it in any modern browser.
Because the Anthropic API requires an authenticated key that must not live in public client-side code, running Marker outside Artifacts needs one of these:
- A small backend proxy (recommended): a tiny serverless function (Cloudflare Worker, Vercel/Netlify function, etc.) that holds your
ANTHROPIC_API_KEYserver-side, forwards requests tohttps://api.anthropic.com/v1/messages, and returns the response. Point the app'sfetchURL at your proxy instead of the API directly. This keeps your key secret and handles CORS. - Local-only testing: you can temporarily add an
x-api-keyheader andanthropic-dangerous-direct-browser-access: trueto thefetchcall, but never commit a real key — this is for local experimentation only.
- URL fetching depends on web search reach. Pages behind logins, paywalls, or aggressive anti-crawler protection may not be readable; Marker shows a clear error suggesting you paste the text directly.
- No standalone key handling yet. Running outside Artifacts requires the proxy described above — a proxy example is not included in this repo.
- Word-count estimate for URLs is model-provided, so the "reading time saved" figure is approximate in URL mode (exact for pasted text).
- Possible future additions: batch/multiple-URL summarizing, a saved-history list, and an image/social "share card" export.
Coming soon.
MIT — see LICENSE.