Download any Scribd document as a searchable, editable PDF — free, no signup, no browser extensions.
A clean, fast, and privacy-first tool to preview and download publicly accessible Scribd documents as PDFs or page images. Built with Next.js 16, TypeScript, and pdf-lib.
| Document Type | How It Works | Output Quality |
|---|---|---|
| Scanned PDFs (CamScanner, photos) | Downloads full-page images from Scribd's CDN | Faithful to original — looks identical |
| Text-based PDFs (typed exams, articles) | Extracts positioned text + diagrams from JSONP | Editable, selectable, searchable text |
| Mixed PDFs (text + diagrams) | Text overlaid on faded diagram images | Text is primary, diagrams visible at 25% opacity |
- Editable PDFs — text-based documents produce PDFs where you can select, copy, and search text
- Image-based PDFs — scanned documents are downloaded as high-res page images
- Positioned text rendering — preserves the original document layout using exact pixel coordinates
- Diagram preservation — tables, graphs, and figures embedded at their correct positions
- ZIP download — get all page images as individual files
- TXT download — extract plain text from text-based documents
- Favorites & search — star important docs, search your download history
- Keyboard shortcuts — Ctrl+K to focus, Ctrl+Enter to fetch, Esc to close
- Dark/light mode — beautiful in both themes
- Mobile support — works on iOS, Android, and desktop
- No data stored on servers permanently
- Documents are processed on demand
- Your browsing history stays in your browser's local database
- No tracking, no analytics, no ads
User's Browser (passes Cloudflare)
|
v
Bookmarklet extracts page HTML
|
v
Server parses HTML -> finds JSONP URLs
|
v
Downloads page images + text from Scribd CDN
|
v
Generates PDF with pdf-lib (text + diagrams)
|
v
User downloads the PDF
Scribd uses Cloudflare's managed challenge to block all server-side access. No free server can bypass this — it requires JavaScript execution in a real browser.
The bookmarklet runs in the user's browser (which passes Cloudflare naturally), extracts the page data, and sends it to our server for PDF generation. This is the only free, permanent solution.
Scribd splits text documents into two layers:
- Image layer — diagrams, tables, borders (as
.jpgfiles) - Text layer — positioned text spans with exact
(left, top, fontSize, color)coordinates (in JSONP files)
Our server:
- Parses the JSONP to extract text spans with their parent div's font-size
- Auto-detects the coordinate scale factor (text coordinates are ~4.4x larger than page dimensions)
- Draws diagram images at their exact positions (25% opacity)
- Draws text on top at scaled positions (selectable, editable)
- Node.js 18+ or Bun
- npm/bun package manager
# Clone the repository
git clone https://github.com/Qadyyr/scrapd.git
cd scrapd
# Install dependencies
bun install
# Set up the database
bun run db:push
# Start the dev server
bun run devVisit http://localhost:3000 in your browser.
- Fork this repository
- Import it into Vercel
- Deploy — no environment variables needed!
- Drag the "Extract Scribd" button to your bookmarks bar
- Open any Scribd document page
- Click "Extract Scribd" from your bookmarks bar
- A new tab opens with the download ready — click "Download PDF"
- Copy the bookmarklet code from the homepage
- Bookmark any page, then edit the bookmark's URL and paste the code
- Name it "extract"
- On a Scribd page, tap the address bar, type "extract", tap the suggestion
- A new tab opens with the download ready
| Technology | Purpose |
|---|---|
| Next.js 16 | App Router, API routes, SSR |
| TypeScript 5 | Type safety throughout |
| Tailwind CSS 4 | Styling + responsive design |
| shadcn/ui | UI components (New York style) |
| pdf-lib | Client-side + server-side PDF generation |
| JSZip | ZIP archive creation |
| cheerio | HTML parsing for text extraction |
| Prisma ORM | Download history (SQLite) |
| Framer Motion | Animations |
| z-ai-web-dev-sdk | Cloudflare bypass (sandbox only) |
src/
app/
page.tsx # Main UI (hero, document card, history)
layout.tsx # Root layout with theme provider
api/scribd/
info/route.ts # Fetch document info
extract-full/ # Bookmarklet endpoint
download/ # Generate PDF (image + text + diagrams)
download-zip/ # Generate ZIP archive
download-txt/ # Generate plain text file
history/ # Download history CRUD
stats/ # Usage statistics
lib/
scribd.ts # URL parsing, HTML fetching, text extraction
db.ts # Prisma client
components/
theme-provider.tsx # Dark/light mode
animated-counter.tsx # Stats animation
prisma/
schema.prisma # DownloadHistory model
public/
mobile-setup.html # Mobile setup guide
cloudflare-worker/
worker.js # Optional Cloudflare Worker proxy
README.md # Worker setup guide
| Variable | Required | Description |
|---|---|---|
DATABASE_URL |
Yes | SQLite database path (default: file:./db/custom.db) |
CF_WORKER_URL |
No | Cloudflare Worker URL (for Vercel deployments) |
ZAI_BASE_URL |
No | z-ai SDK base URL (sandbox only) |
ZAI_API_KEY |
No | z-ai SDK API key (sandbox only) |
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This tool is intended for downloading publicly accessible documents that you have the right to download. Please respect Scribd's Terms of Service and all applicable copyright laws. Do not download or distribute copyrighted material without permission from the rights holder.
This project is not affiliated with Scribd, Inc. All trademarks belong to their respective owners.
- Cloudflare protection: Scribd blocks all server-side access. The bookmarklet is required to bypass this from the user's browser.
- 403 pages: Some pages may return 403 on the image URL. These are rendered as text-only pages.
- Font rendering: Uses Helvetica (pdf-lib StandardFonts). Original fonts are not preserved.
- WinAnsi encoding: Special Unicode characters are sanitized to ASCII equivalents.
MIT License — see LICENSE for details.
- pdf-lib — PDF generation library
- cheerio — HTML parsing
- shadcn/ui — UI components
- JSZip — ZIP archive creation
- Framer Motion — Animations
Made with Next.js, TypeScript, and Tailwind CSS