Docs

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.

rdrr v0.4.1 · MIT · npm · GitHub

Install

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"

Quick start

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"}'

What you can read

Paste any URL. rdrr figures out the type and picks the right extractor.

X profiles

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

![](https://pbs.twimg.com/media/HFuOPvyXQAEGHMn.jpg?name=orig)

…

Use -n 50 for more posts, --order oldest to reverse the order of what you get.

Single X posts

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

![](https://pbs.twimg.com/media/HFuOPvyXQAEGHMn.jpg?name=orig)

…

Also handles the canonical https://x.com/i/status/<id> form.

YouTube videos

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?

…

GitHub issues and PRs

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)

…

GitHub files

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

![](https://img.shields.io/badge/Node.js-18%2B-brightgreen?style=flat-square) [![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

…

PDFs

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.

Anything else

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

…
auto-handled: wikipedia reddit hacker news substack arxiv chatgpt.com/share claude.ai/share gemini grok x.com github + readability

Local files and stdin

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)

Flags

Every flag, with an example you can paste.

flagdescriptionexample
-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 -

Subcommands

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.

subcommanddescriptionexample
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

Recipes

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