Skip to main content

socdl

Social media downloader for humans. Instagram · TikTok · YouTube · Twitter/X · Reddit · Facebook

PyPI Python License: MIT CI

Read this in another language: 🇮🇩 Bahasa Indonesia


✨ Highlights

  • One command for every platform. Paste any link — socdl picks the best engine automatically.
  • Handles carousels properly. Instagram photo + video posts? All items downloaded, not just the video.
  • Clean folders. Organized by platform → uploader → dated filename. No mess.
  • Beautiful TUI. Rich progress bars, colored tables, banners. Feels good to use.
  • Interactive or one-shot. Run socdl for a REPL, or socdl <url> and go.
  • Clipboard watcher. socdl watch — copy a link, it downloads. That's it.
  • Batch mode. socdl -f links.txt — download hundreds of links at once.
  • History log. socdl history — see everything you've grabbed.
  • Bilingual. English + Bahasa Indonesia (--lang en|id).

📦 Install

⚡ One-liner (no Python required)

Windows (PowerShell):

irm https://raw.githubusercontent.com/Erzambayu/socdl/main/install.ps1 | iex

Linux / macOS (bash):

curl -fsSL https://raw.githubusercontent.com/Erzambayu/socdl/main/install.sh | bash

The installers download the standalone binary from the latest release, put it on your PATH, and fall back to pip automatically if a binary isn't available.

🐍 Via Python package managers

pip install socdl

Or with pipx (recommended, isolated env):

pipx install socdl

📥 Manual download (standalone binary)

Grab the binary for your platform from the latest release:

Platform Asset
Windows x64 socdl-windows-x64.exe
Linux x64 socdl-linux-x64
# Linux — make it executable and run
chmod +x socdl-linux-x64
./socdl-linux-x64 --help

Requirements: none for the standalone binary. For pip install you need Python 3.9+. Either way, ffmpeg is optional but recommended for best YouTube quality.

Installing ffmpeg
OS Command
Windows winget install Gyan.FFmpeg
macOS brew install ffmpeg
Linux sudo apt install ffmpeg / your distro

🚀 Quick start

Interactive mode — just run:

socdl

Paste any link, press Enter — done.

One-shot mode:

socdl https://www.instagram.com/p/XXXX/
socdl https://youtu.be/XXXX https://vt.tiktok.com/XXXX

Batch from file:

socdl -f my-links.txt

Clipboard watcher (auto-download on copy):

socdl watch

🎛️ Commands

Command Description
socdl Launch interactive TUI
socdl <url> [<url>…] Download URLs directly
socdl -f links.txt Batch download from file
socdl watch Clipboard watcher
socdl history Show recent downloads
socdl config Show config; use --set key=value to edit
socdl update Upgrade yt-dlp / instaloader / gallery-dl
socdl detect <url> Debug: print detected platform / kind

Options (available on the main command):

-o, --output PATH        Override output directory
-q, --quality LEVEL      best | 1080p | 720p | 480p | 360p | audio
    --lang {en,id}       Force UI language
-f, --file PATH          Batch mode from text file
-V, --version            Show version

Interactive slash commands (inside socdl):

/help           Show help
/config         Open config file
/history        Show recent downloads
/watch          Start clipboard watcher
/paste          Download URL from clipboard
/open           Open downloads folder
/lang en|id     Switch UI language
/quit           Exit

⚙️ Configuration

Config lives at:

  • Linux/macOS: ~/.config/socdl/config.toml
  • Windows: %APPDATA%\socdl\config.toml

Sample:

output_dir             = ""              # empty = ~/Downloads/socdl-downloads
subfolder_per_platform = true
subfolder_per_uploader = true

language               = "en"            # "en" | "id"
quality                = "best"          # best|1080p|720p|480p|360p|audio
embed_metadata         = true
embed_thumbnail        = true
concurrent_fragments   = 4
restrict_filenames     = true

check_updates          = true
log_history            = true

instagram_login        = ""              # your IG username (for private/story)
cookies_from_browser   = ""              # "" | chrome | firefox | edge | brave

Edit inline:

socdl config --set quality=1080p
socdl config --set language=id
socdl config --set output_dir=D:/media
socdl config --show

🔐 Private / login-required content

For Instagram stories, private accounts, age-restricted YouTube, etc.:

Instagram — one-time login via instaloader:

socdl config --set instagram_login=your_username
instaloader -l your_username    # asks password, saves session

YouTube / X / Reddit — reuse your browser cookies:

socdl config --set cookies_from_browser=chrome

Supported browsers: chrome, firefox, edge, brave, opera, vivaldi.

🗂️ Folder structure

~/Downloads/socdl-downloads/
├── Instagram/<username>/2024-01-15_ABCDEF_1.jpg
├── TikTok/<username>/2024-01-15_video-title.mp4
├── YouTube/<uploader>/Video Title [XXXX].mp4
├── Twitter/<username>/2024-01-15_tweetid_1.jpg
└── Reddit/<subreddit>/postid_01.jpg

🌍 Supported sites

Core:

  • Instagram — posts, reels, carousels (photo+video), profile scrape, stories*
  • TikTok — videos, photo slides, profiles
  • YouTube — videos, shorts, playlists
  • Twitter/X — tweets with images/video, threads
  • Reddit — posts (image, video, galleries)
  • Facebook — public videos and posts*

* May require login/cookies. See Private content.

Plus 1000+ other sites via yt-dlp fallback (Twitch clips, Vimeo, SoundCloud, …).

🧑‍💻 Development

git clone https://github.com/Erzambayu/socdl.git
cd socdl
python -m venv .venv
source .venv/bin/activate    # Windows: .venv\Scripts\activate
pip install -e ".[dev]"
socdl --help

Run tests / lint:

pytest
ruff check .

🤝 Contributing

PRs welcome! See CONTRIBUTING.md.

📄 License

MIT © Erzam Bayu


🇮🇩 Bahasa Indonesia

socdl — downloader sosmed yang ramah manusia. Instagram, TikTok, YouTube, Twitter/X, Reddit, Facebook — semua dari satu command.

Kenapa socdl?

  • Paste link apa aja, socdl otomatis pilih engine yang paling cocok.
  • Instagram carousel foto+video? Semua item ke-download, bukan cuma video-nya.
  • Folder rapi otomatis: platform → uploader → tanggal.
  • TUI cakep pake Rich (progress bar, tabel warna).
  • Bisa interactive (socdl) atau one-shot (socdl <link>).
  • Clipboard watcher — copy link, langsung download. Ga usah bolak-balik terminal.
  • Batch dari file .txt, history log SQLite, auto-update checker.
  • Bilingual — bisa English atau Indonesia (--lang id).

Install

One-liner (tanpa Python):

# Windows (PowerShell):
irm https://raw.githubusercontent.com/Erzambayu/socdl/main/install.ps1 | iex
# Linux / macOS:
curl -fsSL https://raw.githubusercontent.com/Erzambayu/socdl/main/install.sh | bash

Atau download manual binary dari Releases.

Via pip:

pip install socdl
# atau (lebih rapi):
pipx install socdl

Butuh ffmpeg (opsional tapi disaranin). Binary standalone ga butuh Python.

Pake

# Mode interactive (paling enak):
socdl --lang id

# One-shot:
socdl https://www.instagram.com/p/XXXX/

# Batch dari file:
socdl -f links.txt

# Auto-download apapun yang lo copy:
socdl watch

Config

Edit gampang:

socdl config --set language=id
socdl config --set quality=1080p
socdl config --set output_dir=D:/downloads
socdl config --show

Konten private (story IG, dll)

# Instagram
socdl config --set instagram_login=username_lo
instaloader -l username_lo   # login sekali, sesi tersimpan

# YouTube/X/Reddit — pake cookies browser:
socdl config --set cookies_from_browser=chrome

Support

Ada bug atau request? Buka issue di GitHub.


Made with ❤️ by Erzam Bayu

Metadata

Release files for socdl 0.1.1

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

Source distribution (sdist)

Source distribution for socdl 0.1.1
File Size Uploaded
socdl-0.1.1.tar.gz 23.0 kB Details

Built distribution (wheel)

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

Total release size: 52.2 kB

Release files / socdl-0.1.1.tar.gz

Download URL socdl-0.1.1.tar.gz
Size 23.0 kB
Tags Source
SHA-256 checksum
How to use checksums
cc8fedcb5fa509fb3af9b448ef1948464fffc654c26fb065965eca3485b662d5
BLAKE2b-256 checksum
How to use checksums
100bdb915f2ed4729afceba7ca065ab79d2f31451afefba5839e3331d9212bac
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.

Transparency log

Release files / socdl-0.1.1-py3-none-any.whl

Download URL socdl-0.1.1-py3-none-any.whl
Size 29.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d1ee39f1c85a20565281afd87fbbea5cf87e0e0c533b204f259644e93b0c0e1a
BLAKE2b-256 checksum
How to use checksums
e7fea5c52f454b7664dd7ff0ce5f1d64a7c76f3061f81c83bf6fd8ac3536741f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.

Transparency log

Release history Release notifications | RSS feed

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

This release

0.1.1 This release

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