Skip to main content

ted2zim

Get the best 💡 TED videos offline ⬇️

An offliner to create ZIM 📦 files from TED talks

CodeFactor License: GPL v3 codecov PyPI version shields.io PyPI - Python Version Docker

TED (Technology, Entertainment, Design) is a global set of conferences under the slogan "ideas worth spreading". They address a wide range of topics within the research and practice of science and culture, often through storytelling. The speakers are given a maximum of 18 minutes to present their ideas in the most innovative and engaging ways they can. One can eaisly find all the TED videos here.

This project is aimed at creating a sustainable solution to make TED accessible offline by creating ZIM files providing these videos in a similar manner like online.

ted2zim adheres to openZIM's Contribution Guidelines.

ted2zim has implemented openZIM's Python bootstrap, conventions and policies v2.0.0.

Getting started 🚀

Install the dependencies

Make sure that you have python3, unzip, ffmpeg, wget and curl installed on your system before running the scraper (otherwise you'll get a warning to install them).

Setup the package

One can easily install the PyPI version but let's setup the source version.

First, clone this repository.

If you do not already have it on your system, install hatch to build the software and manage virtual environments (you might be interested by our detailed Developer Setup as well).

pip3 install hatch

Start a hatch shell: this will install software including dependencies in an isolated virtual environment.

hatch shell

That's it. You can now run ted2zim from your terminal

ted2zim --topics [TOPICS] --name [NAME]

For the full list of arguments, see this file or run the following

ted2zim --help

Example usage Sample of creating a ZIM for augmented reality topic, with a custom name, mp4 format and so on.

ted2zim --topics="augmented reality" --debug --name="augumented_reality" --format=mp4 --title="Augmented Reality" --description="TED videos in AR category" --creator="TED" --publisher="openzim" --output="output" --keep --low-quality

Sample of creating a ZIM for specific URLs, with a custom name, mp4 format and so on.

ted2zim --links https://www.ted.com/talks/gautam_shah_can_the_metaverse_bring_us_closer_to_wildlife,https://www.ted.com/talks/micaela_mantegna_how_to_stop_the_metaverse_from_becoming_the_internet_s_bad_sequel --debug --name="sample_links" --format=mp4 --title="Sample Links" --description="TED talks from two different URLs" --creator="TED" --publisher="openzim" --output="output" --keep --low-quality

This project can also be run with docker. Use the provided Dockerfile or pre-build images to run it with Docker. See steps here.

Features 🤖

You can create ZIMs for multiple topics (should be same as given here), choose between different video formats (webm/mp4), different compression rates, and even use an S3 based cache.

Want more flexibility? There's a multitool

ted2zim-multi is an extra command available that allows you to do much more with the scraper. It falls back to ted2zim if normal commands are passed. It supports creation of multiple ZIMs with single command for both playlists and topics and even getting metadata from a specified JSON file. It supports the following extra arguments -

  • --indiv-zims - Allows you to create one zim/topic or one zim/playlist
  • --{name|description|zim-file|title}-format - Allows you to add custom format for the equivalent ted2zim arguments. You can add {identity} as a placeholder in these values to get the playlist ID / topic name in it's place (spaces replaced by -). You can now also add {slug} to get the topic/playlist slug.
  • --metadata-from - Path to a JSON file containing the metadata.

Should be of the following format:

{
    "<playlist-id/topic-name-with-underscores>": {
        "name": "sample_name_{identity}",
        "description": "Sample description",
        "title": "Custom title",
        "zim-file": "sample.zim",
        "tags": "tag",
        "creator": "Yourself",
        "build-dir": "/custom_build_dir"
    }
}

See ted2zim-multi --help for details.

License 📖

GPLv3 or later, see LICENSE for more details.

Metadata

Release files for ted2zim 3.2.0

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

Source distribution (sdist)

Source distribution for ted2zim 3.2.0
File Size Uploaded
ted2zim-3.2.0.tar.gz 458.1 kB Details

Built distribution (wheel)

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

Total release size: 4.9 MB

Release files / ted2zim-3.2.0.tar.gz

Download URL ted2zim-3.2.0.tar.gz
Size 458.1 kB
Tags Source
SHA-256 checksum
How to use checksums
58b51eddd6fed5b11f63c5ac55e3d773fb63f1f712e4f84e38af269bbacaa191
BLAKE2b-256 checksum
How to use checksums
e1d21bf0c8da2a28a8cb34eb75e263841fe4019cdce5004029be52c40166c932
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 7, 2026.

Transparency log

Release files / ted2zim-3.2.0-py3-none-any.whl

Download URL ted2zim-3.2.0-py3-none-any.whl
Size 4.5 MB
Tags Python 3
SHA-256 checksum
How to use checksums
e3e30472305c475021b7246711c454482f726d7745fea2a05252d4ba622764d8
BLAKE2b-256 checksum
How to use checksums
0775f44bfbe4d957ff307406504314b69135565a8d618f10916839f06cee1008
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 7, 2026.

Transparency log

Release history Release notifications | RSS feed

3.2.1

2 release files

This release

3.2.0 This release

2 release files

3.1.0

2 release files

3.0.3

2 release files

3.0.2

2 release files

3.0.1

2 release files

3.0.0

2 release files

2.1.0

2 release files

2.0.13

2 release files

2.0.9

2 release files

2.0.8

2 release files

2.0.7

2 release files

2.0.6

2 release files

2.0.5

2 release files

2.0.4

2 release files

2.0.3

2 release files

2.0.2

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

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