Skip to main content

sdexe

Suite for Downloading, Editing & eXporting Everything

PyPI version Python 3.10+ License: MIT

Local tools for media downloads, PDF manipulation, image processing, and file conversion. Everything runs on your machine. No uploads, no accounts, no data leaves your device.

Install

One command sets up everything on a fresh machine (Homebrew on macOS, Python 3.12, ffmpeg, then sdexe in its own private environment at ~/.sdexe). Safe to re-run.

macOS / Linux:

curl -fsSL https://sdexe.com/install.sh | bash

Windows (PowerShell):

irm https://sdexe.com/install.ps1 | iex

Already have Python 3.10+? Then just:

pip install sdexe

(Or into a venv of your choice. pipx works too.)

Update

sdexe update

Upgrades sdexe and its downloader engine in place. The Settings page has a button that does the same.

Requirements

  • Python 3.10+ (the installer handles this)
  • ffmpeg: installed by the installer; otherwise sdexe falls back to a bundled copy and offers to install the full one on first run

Usage

sdexe

Opens http://localhost:5001 in your browser. All processing happens locally.

Download from the terminal

sdexe download <url> [url ...] [format] [quality] [options]

Saves straight to the current folder, no browser or server needed. Built to be driven by scripts and AI agents as well as by hand: saved paths go to stdout, progress and errors to stderr, and the exit code is 0 only when every link saved.

You type You get
sdexe download URL MP4, best stream up to 1080p60
sdexe download URL -mp3 MP3, 320 kbps
sdexe download URL -a WAV (lossless)
sdexe download URL --best Highest available video: 4K/8K, top fps and bitrate
sdexe download URL -720p Up to 720p (-1080p30, -4k, -1440p also work)
sdexe download URL1 URL2 URL3 -flac A batch, 3 at a time
sdexe download URL --playlist Every video in a playlist or channel (--limit N for the first N)
sdexe download URL --start 1:30 --end 2:00 Only that section
sdexe download URL -o ~/Music/song.mp3 A specific folder or file name
sdexe download URL --json One JSON document with paths, sizes, resolution, errors

Formats: mp4, webm, mkv for video; wav, mp3, flac, m4a, opus for audio. Tags work as -mp3, --mp3, mp3 or -f mp3. Run sdexe download --help for everything.

sdexe info URL shows the title, length, every available quality with sizes, chapters and subtitles without downloading. It takes the same tags, so sdexe info URL -720p is a dry run of sdexe download URL -720p.

Every tool from the terminal

The PDF, image, audio, video and conversion tools work from the command line too, with the same conventions: outputs land in the current folder as <name>-<action>.<ext>, nothing is overwritten, --json gives one result document, and several files can be passed at once.

sdexe pdf merge a.pdf b.pdf -o book.pdf
sdexe pdf text report.pdf > report.txt
sdexe image resize *.jpg --width 1200
sdexe image convert IMG_0001.heic -f jpg
sdexe audio trim podcast.mp3 --start 1:00 --end 2:30
sdexe video gif clip.mp4 --width 480
sdexe convert data.csv -f json
sdexe file hash installer.dmg

Run sdexe pdf, sdexe image, sdexe audio, sdexe video, sdexe convert --help or sdexe file to list the commands in each group.

Use it from AI agents

Agents can call the CLI directly. Two ways to make it discoverable:

claude mcp add sdexe -- sdexe mcp      # MCP server: every command becomes a tool (Claude Code, Desktop, Cursor)
sdexe skill --install                  # or a Claude Code skill describing every command

sdexe mcp --help shows the Claude Desktop config. MCP outputs go to the client's working folder (or ~/Downloads); set SDEXE_OUTPUT_DIR to change it.

Features

Media Downloader

Download videos and audio from YouTube, Instagram, TikTok, SoundCloud, Twitch, Vimeo, X, and 1000+ other sites.

  • Formats: MP3 (128/192/320 kbps), MP4, FLAC, WAV
  • Quality options: Best, 1080p, 720p, 480p for video
  • Playlist and batch URL support (up to 3 concurrent downloads)
  • Subtitle download for MP4
  • Thumbnail embedded as album art
  • Set a permanent output folder to skip manual saving
  • Real-time progress with speed, ETA, and cancel button
  • Desktop notifications when downloads finish
  • Download history with re-fetch button

PDF Tools

  • Merge: combine multiple PDFs, drag to reorder
  • Split: split by page ranges (e.g. 1-3, 5, 8-10) or every page
  • Images to PDF: convert JPG/PNG/WebP images into a single PDF
  • Compress: reduce file size by compressing content streams
  • Extract Text: pull all text to a .txt file with page markers
  • Password: add or remove PDF password protection

Image Tools

  • Resize: by dimensions or percentage, with aspect ratio lock
  • Compress: batch compression at High / Medium / Low quality
  • Convert: convert between PNG, JPG, and WebP (batch supported)

File Converter

  • Markdown → HTML: live preview + styled standalone HTML output
  • CSV ↔ JSON: bidirectional, first row as headers
  • JSON ↔ YAML: bidirectional
  • CSV ↔ TSV: bidirectional
  • XML → JSON

Development

git clone https://github.com/gedaliahs/sdexe.git
cd sdexe
python -m venv venv
source venv/bin/activate
pip install -e .
sdexe

Release files for sdexe 0.2.28

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sdexe 0.2.28
File Size Uploaded
sdexe-0.2.28.tar.gz 255.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for sdexe 0.2.28
File Interpreter ABI Platform
sdexe-0.2.28-py3-none-any.whl Python 3 none any Details

Total release size: 526.9 kB

Release files / sdexe-0.2.28.tar.gz

Download URL sdexe-0.2.28.tar.gz
Size 255.6 kB
Tags Source
SHA-256 checksum
How to use checksums
1a4381b29523ec85b8b7784e0becdea408641e9b61342e6cf92dda1b3d8b6b08
BLAKE2b-256 checksum
How to use checksums
a444c243d4d70766abe8e303ff1e8e5cf4c182f0886491a66476a379a502fd43
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

Release files / sdexe-0.2.28-py3-none-any.whl

Download URL sdexe-0.2.28-py3-none-any.whl
Size 271.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d390697622de464c92a9216025b164d20b70636e4cc031b641e5c2cb48534b1c
BLAKE2b-256 checksum
How to use checksums
269e3b22d53e01c8cdf03dfeb289a55caf99d9072a02a6bb821b23ed135347f5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

Release history Release notifications | RSS feed

0.2.31

2 release files

0.2.30

2 release files

0.2.29

2 release files

This release

0.2.28 This release

2 release files

0.2.27

2 release files

0.2.26

2 release files

0.2.25

2 release files

0.2.24

2 release files

0.2.23

2 release files

0.2.22

2 release files

0.2.21

2 release files

0.2.20

2 release files

0.2.19

2 release files

0.2.18

2 release files

0.2.17

2 release files

0.2.14

2 release files

0.2.13

2 release files

0.2.12

2 release files

0.2.11

2 release files

0.2.10

2 release files

0.2.9

2 release files

0.2.8

2 release files

0.2.7

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.3

2 release files

0.1.14

2 release files

0.1.13

2 release files

0.1.12

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page