Skip to content

Repository files navigation

ABSP

ABSP

Paste a link. Pick a format. Done.

A desktop app and a self-hosted web app for downloading video or MP3 from YouTube, Pinterest, Instagram, Facebook and X — from one codebase.

CI License: MIT Platforms Telemetry

Download · How it works · Build · Tests

ABSP fetching a 4K video, with a finished MP3 in the queue

Why another downloader?

Most yt-dlp wrappers are a text box and a button. They work for a week, then YouTube changes something and they quietly start handing you 360p — or nothing at all — with an error nobody can read.

ABSP is the same idea, done properly:

  • It actually gets 4K. Most wrappers silently cap at 1080p because the YouTube client they use has been SABR-gated. ABSP uses the clients that still return the full stream ladder — with the measurements to back it up.
  • It solves YouTube's JS challenge. Without a JavaScript runtime, yt-dlp returns zero playable formats. ABSP uses the runtime it already ships, so there is nothing extra to install — why this trips everyone up.
  • It never eats your files. Every job runs in a scratch directory and only moves results into place on success. Downloading the MP3 of a video you already saved will not delete the video — which is exactly what happens when you get this wrong.
  • It stays current. yt-dlp is fetched at runtime and updated with one click, because a pinned copy goes stale within days.
  • It reads like software, not a stack trace. Every failure people actually hit maps to a sentence that says what to do about it.

No account, no telemetry, no bundled adware, no premium tier.


Install

Grab the build for your machine from the latest release:

Platform File
macOS — Apple Silicon (M1–M4) ABSP-*-arm64.dmg
macOS — Intel ABSP-*.dmg
Windows 10/11 (64-bit) ABSP Setup *.exe
Windows — portable, no install ABSP-*-win.zip

The first launch is blocked, because the builds are not code-signed — that needs paid certificates from Apple and a Windows CA. On Windows: More info → Run anyway. On macOS: System Settings → Privacy & Security → Open Anyway. One time, then it behaves like any other app.

On first run ABSP downloads its engine (yt-dlp + ffmpeg, ~130 MB) into your user data folder behind a progress screen. That happens once.

Use it from your phone

npm install
npm run serve

It prints a URL with an access token. Open that on any device on the same Wi-Fi, paste a link, tap Save to device. Same interface, same features — the server does the work and hands your phone the finished file.


Features

Sites YouTube · Pinterest · Instagram · Facebook · X (Twitter)
Video Up to 4K, MP4 — H.264 preferred for compatibility, VP9/AV1 optional
Audio MP3, M4A, Opus, FLAC, WAV, with bitrate control
Playlists Whole playlists and Pinterest boards, or a range like 1-10
Batch Paste many links at once
Trim Save just a section, cut on keyframes
Queue Pause, resume, retry, cancel — and it survives an app restart
Extras Cover art, metadata, chapters, subtitles (embedded or .srt), SponsorBlock
Network Proxy support, stall detection, resumable downloads

Everything runs locally. Files land in ~/Downloads/ABSP, or wherever you point it.


How it works

A Node core wraps yt-dlp and ffmpeg, Electron wraps the Node core, and the browser UI is identical in both. There is no second implementation to keep in sync — the desktop app is the web app plus a native file picker.

server/
  binaries.js    fetches + updates yt-dlp / ffmpeg per platform
  ytdlp.js       format selection, structured progress, error translation
  jobs.js        queue, persistence, pause/resume/retry, stall detection
  app.js         HTTP API + server-sent events
  standalone.js  LAN web-server entry point
electron/        desktop shell — runs the same server on a random local port
public/          the UI, identical in both modes

→ Read the full technical write-up — the YouTube JS challenge, SABR and PO tokens, the client benchmark, the bug that deletes your files, and why macOS calls unsigned apps "damaged".


Build from source

npm install
npm start          # desktop app
npm run serve      # web server

Installers:

npm run dist:mac   # .dmg + .zip for Apple Silicon and Intel
npm run dist:win   # .exe installer + portable .zip
npm run dist:all

Both Windows targets cross-build from an Apple Silicon Mac with no Wine. Regenerate the icon with npm run icon and the screenshot with npm run screenshot — both are produced by scripts in this repo, not by hand.


Tests

npm test           # 53 unit tests — deterministic, offline, gates CI
npm run test:e2e   # 142 assertions against a live server

The unit suite covers source detection, playlist rules, format selection, every error translation, download-folder validation and settings I/O.

The end-to-end suite drives the real HTTP API: probes and downloads across all five sites, every audio format, quality ladders, overwrite protection, job control, pause/resume/retry, playlist ranges, trimming, HTTP range requests, server-sent events and concurrency limits. It depends on five third-party sites, so it deliberately does not gate CI:

ABSP_TOKEN=e2etoken npm run serve     # terminal 1
ABSP_TOKEN=e2etoken npm run test:e2e  # terminal 2

Configuration

Variable Effect
ABSP_TOKEN Fixed access token for web mode — one is generated if unset
ABSP_NO_TOKEN=1 Disable the token entirely; trusted networks only
ABSP_HOST=127.0.0.1 Bind to this machine only, no LAN
PORT Web server port (default 8710)
ABSP_DATA_DIR Override the data folder

Everything else lives in Settings: download folder, codec preference, cookies, proxy, concurrency, stall timeout, SponsorBlock and subtitle options.


Troubleshooting

Symptom Fix
Downloads suddenly fail Settings → Update engine. This fixes most breakage
Only low quality offered Settings → Advanced → Player clients → android_vr,web_embedded
Private or age-restricted content Settings → Use cookies from browser → Chrome
Safari cookies fail on macOS Grant ABSP Full Disk Access, or use Chrome
"No video found" The post is an image, not a video
A download hangs It is killed after 5 minutes of silence — press Retry

Contributing

Issues and pull requests are welcome — see CONTRIBUTING.md. Run npm test before opening a PR.


Using this responsibly

Download things you have the right to: your own uploads, Creative Commons and public-domain works, content the creator offers for download, or material your local law permits you to copy for personal use.

Bulk downloading violates the Terms of Service of all five sites. Instagram, Facebook and X posts also routinely show identifiable private individuals — saving and resharing those raises privacy questions that have nothing to do with copyright. ABSP is built to run on your own machine for your own use; running it as a public service is a different thing entirely, and that is on you.


Built on yt-dlp and FFmpeg. Both are excellent — this is a friendly face on top of them.

MIT licensed.

About

Paste a link. Pick a format. Done. Desktop + self-hosted web downloader for YouTube, Pinterest, Instagram, Facebook and X. Actually gets 4K.

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages