Open-source project
mediathekview/MediathekView avatar
mediathekview/MediathekView

MediathekView, a client for the archives of German public broadcasters

Das Programm MediathekView durchsucht die Online-Mediatheken verschiedener Sender

1,019 stars114 forksKotlinGPL-3.0

At a glance

What is it?
MediathekView is a Kotlin desktop application that searches the online media libraries of German-language public broadcasters, downloads what it finds or hands it to VLC or another player, and can subscribe to series so that new episodes are picked up automatically. The engineering worth reading is in the packaging, where portable builds bundle their own Java runtime, RPM packages ship with a GPG key, and macOS gets separate disk images for Intel and Apple Silicon.
Who is it for?
MediathekView fits a viewer who wants the public broadcaster back catalogue in one searchable place, on Windows, Linux or macOS, and who wants to script or automate downloads rather than click through a website.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 4 days ago.
What is it written in?
Mainly Kotlin, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

One search box over the public broadcaster back catalogue

MediathekView does one thing, and the README describes it in one sentence. The program searches the online media libraries of various, predominantly German-speaking, public-law broadcasters, downloads contributions from them or plays them back with VLC Media Player or a program of your own choosing. Series and show series can also be subscribed to.

That is a narrow scope, and the reason it is a good scope is that the archives of public broadcasters are, in practice, dozens of separate websites with their own search interfaces, their own expiry rules and their own player embeds. A user who wants to find an old episode of a regional news programme can spend a quarter of an hour in a broadcaster's own search, and doing that across all of them is a research project. A single client that indexes them all turns that into a query.

The distinction between downloading and playing is worth noting, because it is the difference between a media manager and a browser plugin. The application resolves the item to a file or a stream, and then either stores it or passes it to an external player, so the user keeps the choice of player, and the choice of whether to keep the file at all.

The subscription feature is the one that changes the tool from a search utility into a service. If a show can be subscribed to, the application will pick up new episodes as they appear, which is the behaviour people expect from a television guide rather than a search box. That also means the application has to keep track of what it has already seen, which is a different kind of state from a search query.

The upstream project describes the application in German, and the community around it is German speaking, with the forum, the manual and the FAQ all hosted on the project's own domains.

The broadcaster list is the real feature matrix

The list of supported broadcasters is the most informative section of the README, because it shows exactly what the application covers and it is a map of the German-language public broadcasting landscape.

Under ARD, Das Erste, there are the regional members: alpha, BR, HR, MDR, NDR, RBB, rbtv for radio Bremen, SR, SWR and WDR. Under ZDF, Zweites Deutsches Fernsehen, there are ZDFinfo, ZDFneo and zdf-tivi. Then there are the joint programmes of ARD and ZDF: 3Sat, Arte, Funk, Kika, the children's channel of both, and Phoenix.

Arte is listed with its language variants, German, English, French, Spanish, Italian and Polish, and that is a detail that tells you the list is not a rough inventory. Arte publishes separate channels per language with separate archives, and an application that supported only the German one would silently miss most of the catalogue. SRF is listed as including podcasts, which is the same kind of specificity, since a Swiss broadcaster's podcast feed lives in a different place from its television archive.

Then there are the national broadcasters outside the ARD and ZDF structures, DW TV for Deutsche Welle and ORF for Österreichischer Rundfunk, and SRF for Schweizer Rundfunk.

For an engineer evaluating the scope, this list is the answer to the question of how much work a change to a broadcaster's website causes. Each entry corresponds to a separate parser, and the ten regional members under ARD are ten chances for the application to need a fix when a broadcaster redesigns its site.

Packaging that decides whether Java is your problem

The installation section is short and it is the most useful part of the README for anybody deploying the tool on a machine they do not fully control.

The application is offered in several packages on the project's website, including installers for Windows and Linux. In addition to the installers there are portable variants, for example as a zip or a tar.gz, and the crucial detail is that these packages already contain the required Java version, so Java does not have to be installed. That is a real convenience on a machine that is not a developer workstation, and it is the difference between a one-command setup and a Java installation first.

For RPM based Linux packages there is also a GPG key, with which the RPM package can be verified by its signature. The README gives the import command:

bash
sudo rpm --import https://download.mediathekview.de/stabil/MediathekView-rpm-signature-2021.pub

That is worth pausing on. Signing the repository is a normal thing to do, but publishing the key and telling users how to import it is the part that often gets skipped, and without it the signature check is theatre.

For macOS there are ready-made DMG images for both Intel and Apple Silicon machines, which is the correct approach today, since a single Intel-only image would need Rosetta for half the audience.

The packaging machinery is visible in the repository. There is an .install4j/ directory, an installers/ directory, a pom.xml with the Maven wrapper scripts mvnw and mvnw.cmd and a .mvn/ directory, which is how a Java desktop application is built and packaged with a self-contained runtime, and a .gitlab-ci.yml alongside the GitHub Actions workflow that the build and test badge points at.

Two documents in the root that hint at the internals

Two files at the root of the repository are more revealing than the README in one respect, because their names describe subsystems that the readme never mentions.

There is hls-privacy.md. The application plays or captures HLS streams, since that is how most of the public broadcaster archives are delivered, and HLS has properties that matter for a program which fetches streams on your behalf: the segments are requested individually, so a viewer can be identified by the pattern of its requests, and the delivery is chunked, which makes caching and eviction observable in a way that a single file download is not. A project that ships a document with that name is a project that has thought about what its own traffic looks like to the broadcaster, and has written down the answer for its users.

There is also lucene_help.md, which points to the search implementation. A catalogue spanning dozens of broadcasters with thousands of entries each is not something you can search with a filter over a list, and a full-text index built on Lucene is the standard answer. Having a help document for it in the repository suggests the search is a component a user can configure, and the file is where the configuration is explained.

Neither file is described in the README, so a reader has to find them. That is a small documentation gap, and it is the kind that a project with a German-language documentation set and a forum full of questions would normally close with a link.

Where to ask, where to report, and where to read

The support section is short and points in three directions, which is a sensible division.

For questions, help, wanted broadcasts or anything else, the README says to use the forum. The forum is on the project's own domain, forum.mediathekview.de, and it is where the community lives.

For bugs, the README points at the contribution guide, specifically the section on reporting bugs in CONTRIBUTING.md, which is a deliberate choice. A bug report that follows a template is reproducible, and a forum thread with a description of a broken search is not.

The rest of the links are the documentation set: the main site, the download page, the wiki on GitHub, the forum, the manual at mediathekview.de/anleitung/, and the FAQ. Six destinations, which is a lot for a project of this size, and the split between the site, the wiki and the repository suggests that the wiki is where the volatile operational notes live and the site is where the stable description lives.

The development side has the same split. The README links the contribution guide twice, once in English and once in German, and the repository carries a CHANGELOG.md, a CONTRIBUTING.md and a LICENSE.md alongside the build files.

The credits section is a single line, and it is about the country flags shown in the interface, which were created by Freepik and hosted on flaticon.com. That is a small licensing footnote and it is the kind of thing that is easy to omit and annoying to notice when it is missing, so a project that states it has done the right thing.

Where MediathekView is the wrong tool

The first limit is the catalogue itself, and it is absolute. Every broadcaster listed is a German-language public-law broadcaster, and the tool has no content from anywhere else. A user who wants to search British or American public archives, or commercial streaming services, or their own local library's digital collection, is outside the scope entirely. This is not a limitation that a configuration option can fix, because each entry corresponds to a parser written for a specific broadcaster's own web interface.

The second is the fragility that follows from that design, and it is worth stating as an inference rather than as a documented fact. Because the application reads each broadcaster's own website rather than a common API, a broadcaster that changes its search or its player breaks the corresponding part of the application, and the fix has to be written against the new site. The scale of that work is proportional to the number of broadcasters, and the list shows ten regional ARD members alone. A user who depends on a specific regional archive should expect occasional breakage in that one area while the rest keeps working.

The third is the packaging model. The project distributes installers, portable archives and disk images from its own download servers, and the repository publishes no GitHub releases at all. For a user on a managed workstation, where software arrives through an internal catalogue or a package manager, that means the tool is outside the normal delivery path and has to be handled as an exception.

The fourth is what the application is not. It is a client for archives that are, in most cases, freely available to everyone; it is not an archival tool with preservation guarantees, not a downloader with a resume-capable queue for large media, and not a DRM bypass. The README says nothing about scheduling background downloads or managing a large offline library, and the subscription feature is about new episodes rather than about bulk retrieval.

The fifth is the platform story. The build is Maven and the primary language is Kotlin, the macOS images are hand-built for two architectures, and the Windows and Linux installers come from a separate packaging setup. Every one of those choices is a maintenance commitment, and the project has been doing that for long enough that the last push on 2026-10-19 suggests it is still doing it.

Editorial conclusion

MediathekView fits a viewer who wants the public broadcaster back catalogue in one searchable place, on Windows, Linux or macOS, and who wants to script or automate downloads rather than click through a website. It does not fit someone outside the German-speaking public broadcasting world, since the entire catalogue is specific to those broadcasters, and it does not fit a user who needs a stable, versioned package manager entry, because the project distributes installers and archives from its own site rather than through GitHub releases. Before you install it, pick the package that matches how you want to update, and if you take the RPM, import the published GPG key so the signature can be verified. The licence is GPL-3.0, the last push was on 2026-10-19, and the repository publishes no GitHub releases.

Frequently asked questions

Which broadcasters does MediathekView support?

The online media libraries of ARD and its regional members alpha, BR, HR, MDR, NDR, RBB, rbtv, SR, SWR and WDR, ZDF with ZDFinfo, ZDFneo and zdf-tivi, the joint ARD and ZDF programmes 3Sat, Arte in six languages, Funk, Kika and Phoenix, DW TV, ORF, and SRF including podcasts.

Do I need to install Java to use MediathekView?

Not if you use the portable variants, since the zip and tar.gz packages already contain the required Java version. The Windows and Linux installers are also offered on the project's download page, and macOS has ready-made DMG images for both Intel and Apple Silicon machines.

How do I verify the signature of the MediathekView RPM package?

A GPG key is published for the RPM based packages, and you import it with `sudo rpm --import https://download.mediathekview.de/stabil/MediathekView-rpm-signature-2021.pub`, after which the package signature can be checked against it.

Can I play MediathekView videos with my own player?

Yes. The application either downloads contributions or plays them back with VLC Media Player or a program of your own choosing, so the player is not imposed by the tool.

Can MediathekView follow a series automatically?

Yes, series and show series can be subscribed to, which is how the application keeps up with new episodes of a programme instead of being only a search interface over the archive.

Official sources

  1. Issues
  2. License: GPL-3.0
  3. mediathekview/MediathekView on GitHub
  4. Project website
  5. README
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/mediathekview-mediathekview.svg)](https://hysenlabs.com/projects/mediathekview-mediathekview)

Was this useful?