Turn any URL into clean markdown from your terminal. First-class support for X profiles and single posts, YouTube transcripts, GitHub issues, and PDFs — with token budgets, quality scores, and multiple output formats for AI agents.
Works with npm, pnpm, bun, or npx. No account, no rate limit, runs fully local.
# Install globally npm i -g rdrr
# Install globally pnpm add -g rdrr
# Install globally bun add -g rdrr
# Or skip install entirely npx rdrr "https://react.dev/learn"
Four ways to use rdrr. Same output, different surface.
# Open-source, MIT. 100% free forever — runs fully locally on your machine. # No account, no rate limit, no subscription. # https://github.com/fkonovalov/rdrr # Install globally: npm i -g rdrr # Or run without installing: npx rdrr https://react.dev/learn # Works on any URL — web pages, YouTube, GitHub, PDFs: rdrr https://react.dev/learn rdrr https://www.youtube.com/watch?v=dQw4w9WgXcQ
# No install needed. Prepend rdrr.app/ to any URL: curl "https://rdrr.app/react.dev/learn" # Hosted rate limit: 1,000 requests/month per IP. # Sign in for 3,000 more, or install the CLI for unlimited local use.
# Go to rdrr.app and paste any URL. # Or navigate directly: https://rdrr.app/react.dev/learn https://rdrr.app/youtube.com/watch?v=dQw4w9WgXcQ
# POST with JSON body. Grab a key from /dashboard first.
curl -X POST https://rdrr.app/api/parse \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://react.dev/learn"}' Paste any URL. rdrr figures out the type and picks the right extractor.
A full timeline with replies, quotes, retweets, and permalinks. No scraping, no login, no browser.
rdrr "https://x.com/x" ---
title: "X (@x) — last 10"
author: "@x"
site: "X (Twitter)"
published: "2026-04-12"
source: "https://x.com/x"
domain: "x.com"
description: "what's happening?!"
word_count: 188
---
# X
**@X** · 60.8M followers
> what's happening?!
_Last 10 posts_
---
## [2026-04-12 17:38 UTC](https://x.com/X/status/2043383260927918213)
the last thing my bangers see before being posted

…
Use -n 50 for more posts, --order oldest to reverse the order of what you get.
Point at any tweet URL. rdrr hits the public fxtwitter API first and falls back to the twimg syndication endpoint, so you never hit the x.com login wall. Media, replies, and quoted tweets are all preserved.
rdrr "https://x.com/X/status/2043383260927918213" ---
title: "X (@X)"
author: "@X"
site: "X (Twitter)"
published: "2026-04-12"
source: "https://x.com/X/status/2043383260927918213"
domain: "x.com"
language: "en"
description: "the last thing my bangers see before being posted"
word_count: 28
---
# X (@X)
_[2026-04-12 17:38 UTC](https://x.com/X/status/2043383260927918213)_
the last thing my bangers see before being posted

…
Also handles the canonical https://x.com/i/status/<id> form.
Full transcripts with chapter markers, speakers, and timestamps. Any public video, no API key.
rdrr "https://www.youtube.com/watch?v=We7BZVKbCVw" ---
title: "Head of Claude Code: What happens after coding is solved | Boris Cherny"
author: "Lenny's Podcast"
site: "YouTube"
source: "https://www.youtube.com/watch?v=We7BZVKbCVw"
domain: "youtube.com"
word_count: 20046
---
# Head of Claude Code: What happens after coding is solved | Boris Cherny
**Author:** Lenny's Podcast
**Source:** https://www.youtube.com/watch?v=We7BZVKbCVw
---
[0:00] 100% of my code is written by quad code. I have not edited a single line by hand since November. Every day I ship 10, 20, 30 p requests. So at the moment I have like five agents running while we're recording this. Yeah. Yeah. Do you miss writing code? I have never enjoyed coding as much as I do today because I don't have to deal with all the minutia.
[0:21] There's always this question, should I learn to code? In a year or two, it's not going to matter. Coding is largely solved. I imagine a world where everyone is able to program. Anyone can just build software anytime. What's the next big shift to how software is written?
…
Body plus every comment, tagged by author role (owner, member, collaborator, contributor).
rdrr "https://github.com/anthropics/claude-code/issues/341" ---
title: "Allow excluding [.env] files #341"
author: "jwahdatehagh"
site: "GitHub - anthropics/claude-code"
published: "2025-03-05T15:37:43Z"
source: "https://github.com/anthropics/claude-code/issues/341"
domain: "github.com"
description: "Enjoying using claude code, but the inability to restrict access to files containing sensitive data is a killer for me for actual work."
word_count: 196
---
# Allow excluding [.env] files #341
**Issue** by **jwahdatehagh** · **Created:** 2025-03-05 · **State:** closed · **Labels:** question
---
Enjoying using claude code, but the inability to restrict access to files containing sensitive data is a killer for me for actual work.
---
## Comments (5)
…
Markdown files come back as-is. Other files come wrapped in fenced code blocks with the right language.
rdrr "https://github.com/anthropics/claude-code/blob/main/README.md" ---
title: "README.md - anthropics/claude-code"
site: "GitHub - anthropics/claude-code"
source: "https://github.com/anthropics/claude-code/blob/main/README.md"
domain: "github.com"
word_count: 318
---
# Claude Code
 [![npm]](https://www.npmjs.com/package/@anthropic-ai/claude-code)
[npm]: https://img.shields.io/npm/v/@anthropic-ai/claude-code.svg?style=flat-square
Claude Code is an agentic coding tool that lives in your terminal, understands your codebase, and helps you code faster by executing routine tasks, explaining complex code, and handling git workflows -- all through natural language commands.
**Learn more in the [official documentation](https://code.claude.com/docs/en/overview)**.
## Get started
…
Up to 50 MB. Great for arXiv preprints, whitepapers, and that one RFC your agent keeps re-downloading.
rdrr "https://arxiv.org/pdf/2310.06825" ---
title: "Mistral 7B"
source: "https://arxiv.org/pdf/2310.06825"
domain: "arxiv.org"
word_count: 3899
---
*9 pages*
# Mistral 7B
Albert Q. Jiang, Alexandre Sablayrolles, Arthur Mensch, Chris Bamford, Devendra Singh Chaplot, Diego de las Casas, Florian Bressand, Gianna Lengyel, Guillaume Lample, Lucile Saulnier, Lélio Renard Lavaud, Marie-Anne Lachaux, Pierre Stock, Teven Le Scao, Thibaut Lavril, Thomas Wang, Timothée Lacroix, William El Sayed
## Abstract
We introduce Mistral 7B, a 7–billion-parameter language model engineered for superior performance and efficiency. Mistral 7B outperforms the best open 13B model (Llama 2) across all evaluated benchmarks, and the best released 34B model (Llama 1) in reasoning, mathematics, and code generation.
…
PDF support is optional. Run npm i unpdf if you see a warning.
Dedicated extractors for the sites that matter, with a readability fallback for the rest. No headless browser.
rdrr "https://react.dev/learn" ---
title: "Quick Start"
site: "React"
source: "https://react.dev/learn"
domain: "react.dev"
language: "en"
dir: "ltr"
description: "The library for web and native user interfaces"
word_count: 1942
---
[Learn React](https://react.dev/learn)
Welcome to the React documentation! This page will give you an introduction to 80% of the React concepts that you will use on a daily basis.
### You will learn
- How to create and nest components
- How to add markup and styles
- How to display data
- How to render conditions and lists
- How to respond to events and update the screen
…
Point at a saved .html on disk, or pipe raw HTML in via stdin. Useful for fixtures, offline archives, and shell pipelines.
rdrr ./saved-page.html
curl -s https://example.com | rdrr - ---
title: "Example Domain"
source: "-"
language: "en"
word_count: 17
---
This domain is for use in documentation examples without needing permission. Avoid use in operations.
[Learn more](https://iana.org/domains/example)
Every flag, with an example you can paste.
-o, --output <file> Save to file instead of stdout rdrr "<url>" -o out.md -c, --clip Copy output to the system clipboard (suppresses stdout) rdrr "<url>" --clip -j, --json Full JSON with metadata (alias for --format json) rdrr "<url>" --json --format <fmt> md (default), json, jsonl, or xml rdrr "<url>" --format xml -p, --property <name> Extract one field (title, content, wordCount, …) rdrr "<url>" -p title -l, --language <code> Preferred language (BCP 47) rdrr "<url>" -l fr -n, --limit <n> Max items for aggregate URLs (default: 10) rdrr "https://x.com/x" -n 50 --order <order> newest (default) or oldest rdrr "https://x.com/x" --order oldest --budget <tokens> Truncate body at a paragraph boundary to fit a token budget rdrr "<url>" --budget 2000 --quality Attach a readability score (0–100) + signals to JSON output rdrr "<url>" --quality --json --check Probe readability (exit 0/1, no parse) rdrr "<url>" --check --llms Append the site’s /llms.txt rdrr "<url>" --llms --no-history Skip logging this call to local history rdrr "<url>" --no-history --debug Pipeline diagnostics to stderr rdrr "<url>" --debug 2>log --version Print version rdrr --version - Read HTML from stdin cat page.html | rdrr -
rdrr keeps a local JSONL log of every fetch at
$XDG_STATE_HOME/rdrr/history.jsonl (falls back to
~/.local/state/rdrr/history.jsonl). It auto-rotates at 1000 entries and strips
any basic-auth credentials before writing. Disable globally with
RDRR_NO_HISTORY=1.
rdrr history options: [--limit 20] [--search <q>] [--since <date>] [--json] List recent fetches from the local JSONL log. rdrr history --search react --limit 5 rdrr last options: [-j, --json] Print the URL of the most recent fetch. rdrr last --json Common one-liners. Copy any line and run.
# Save a webpage to a markdown file rdrr https://react.dev/learn -o react.md # Copy clean markdown straight to the clipboard rdrr https://react.dev/learn --clip # Full JSON with metadata, structure, and content rdrr https://example.com --json # LLM-friendly XML with a quality/readability score rdrr https://react.dev/learn --format xml --quality # Just the title (or any single field: author, content, wordCount, …) rdrr https://example.com -p title # Fit a 2k-token budget; rdrr cuts at a paragraph boundary and appends a marker rdrr https://some.article.example/long-read --budget 2000 # 50 posts from an X profile, oldest first rdrr https://x.com/x -n 50 --order oldest # A single X post, direct API (bypasses the login wall) rdrr https://x.com/X/status/2043383260927918213 # YouTube: get just the first transcript segment via jq rdrr https://www.youtube.com/watch?v=We7BZVKbCVw --json | jq '.transcript[0]' # Read raw HTML piped in from anywhere curl -s https://example.com | rdrr - # Probe whether a URL is worth fetching (exit 0 = readable, 1 = not) rdrr --check https://en.wikipedia.org/wiki/TypeScript # Append the site's /llms.txt to the output rdrr https://svelte.dev/docs/svelte --llms # List the last ten fetches from your local history rdrr history --limit 10 # Re-fetch the most recent URL you read rdrr last # Trace what the pipeline is doing (diagnostics go to stderr) rdrr https://example.com --debug 2> pipeline.log