Tomo TV, a Jellyfin Client

Available on Apple TV, iPhone, iPad and Mac. Movies, live TV, music and books from your server, with nearly every codec decoded on-device in Apple's native player.

Download on the App Store
Tomo TV Home on an Apple TV: Home, Live TV, Search and Settings tabs over a Libraries row with Live TV focused, each library's item count on a tab above its card, a Continue row whose name bars fill with each item's progress, and a Favorites row beginning below
FreeOpen source, MITtvOS 16.4+iOS and iPadOS 16.4+macOS 13.4+

Tomo TV plays MKV, HDR10, Dolby Vision, Dolby Atmos, TrueHD, DTS-HD and picture subtitles on the device itself. Anything Apple's player can't read is converted on your Apple TV, iPhone, iPad or Mac, so your server just sends the file.

There are no in-app purchases, no analytics, and no account to create beyond your Jellyfin login. The app is available in English, German, French and Spanish. It hosts no media of its own; see the terms of use.

01 / Your Jellyfin library

Movies, shows, music, photos and books

Every library on your server appears with its artwork and item count. Continueputs whatever you're partway through on the first screen, with Favorites and New below it. Photos open full screen with a slideshow, and on iPhone, iPad and Mac you can pinch to zoom and share the original file. Songs show lyrics that follow along, from your server or lrclib.net, and picking a line plays from it. Books open in a built-in reader for PDF, EPUB, MOBI, Kindle and comic archives, and your reading position is saved to Jellyfin.

Your recent items and channels also appear in the Apple TV Top Shelf, so you can resume from the home screen. tvOS

Lab notes: generating video thumbnails on device and synced Jellyfin lyrics on Apple TV.

Tomo TV Home on iPhone in portrait: Libraries, Continue, Favorites and New rows stacked over the four-tab bar
home, on iPhone
The same Home on iPad, the rows laid out wide under the tab bar
home, on iPad

02 / Live TV and DVR

Live TV with a guide and DVR

Watch live TV from your server's tuners, with a guide that runs two weeks ahead and shows recent frames from the channels. The Channels view shows every channel in a grid, and favorites and groups filter both views. Record a single program or a whole series from its info panel; a program from an XMLTV guide records as a single airing.

Tomo TV's Live TV guide on Apple TV: a strip of days and the Channels, Recordings, Scheduled and Refresh buttons over a column of channel cards, a band of channel groups, and program cells laid out along a time ruler, each led by its channel's name, the airing ones showing recent frames and the time they were seen
two weeks of listings, a day at a time

Channels play through the same on-device engine as your files, with captions, DVB subtitles and teletext.

The remote's channel-skip gesture changes channels, and for a short while after each change the channels on either side keep loading in the background. tvOS

When your server marks commercial breaks, iPhone, iPad and Mac can skip them automatically, an option in Channel Settings. Apple TV shows a Skip Commercial button instead, so you choose.

If your provider allows only a few streams at once, set the number for each playlist in Channel Settings, from 1 to 5, or leave it on Auto to learn it from the provider. When the provider allows one stream, a recording comes first: opening another of its channels offers to watch the recording as it is written, or to stop it and play.

Lab notes: channel surfing with AVKit and channel previews that loop.

The Live TV guide on iPhone in portrait: a strip of days, a band of channel groups, and channel cards showing live frames beside program cells along the time ruler
the guide, on iPhone
The same guide on iPad, twelve channels and three and a half hours of programs in view
the guide, on iPad
The Live TV guide in a Mac window: the day strip and the Channels, Recordings and Scheduled buttons over ten channel cards showing live frames, a band of channel groups, and six hours of program cells along the time ruler, the airing ones showing recent frames
the guide, on Mac

03 / Native playback

Apple's own player, for everything

Everything plays in Apple's native player, so AirPlay, Picture in Picture and the subtitle and audio menus work as they do in any Apple app. Switching audio tracks doesn't restart playback, and your subtitle choice carries over to the next episode.

Swipe down for chapters and Up Next. If your server has intro and credit markers, the player shows Skip Intro and Skip Credits buttons. tvOS

A live channel showing Big Buck Bunny in the native tvOS player: a LIVE mark over the title, the system transport bar at the live edge reading 10:46 AM, an Info button, and round controls for record, favorite, subtitles and audio track
the tvOS player, on a live channel

Watch together with Jellyfin's SyncPlay. Start a group in Settings, and anyone with a phone or iPad signed into the same server joins by scanning a code. Play, pause and seeking stay in sync, and playback waits until everyone is ready. SyncPlay works with video only.

Each video's info panel opens on Resume or Play and Show in Folder, with Favorite, Watched and Progress in one capsule below, then lists the codec, resolution, bit depth and bitrate of every stream and where the file lives on your server. A series or season panel marks every episode watched or unwatched at once.

Tomo TV's info panel on Apple TV for an episode of Veguitas: a still above the title, the season and episode line, a focused Resume button carrying its watch progress beside Show in Folder, and below them Favorite, Watched and Progress in one capsule beside a separate Delete button, each labeled
the info panel

Diagnostics, in Settings under About Tomo TV, records your last playback session: how the file was played and why, its streams, any errors, and which formats the device decodes in hardware. On iPhone, iPad and Mac you can copy or share it. Apple TV has no clipboard, so it saves the log to your Jellyfin account, where your phone can pick it up.

Lab notes, all on Apple TV: Dolby Vision Profile 7, PGS subtitles without transcoding, Dolby Atmos and TrueHD, Up Next with AVContentProposal and scrub thumbnails without trickplay.

04 / Direct play and transcoding

What your server is asked to do

Before you press Play, the info panel tells you which of these three ways a file will play. If it needs the server and transcoding is off, the panel says so.

Each playback path, what decodes the video, and what your server does
PathDecoded byYour server
Direct PlayH.264, HEVC and AV1 that this device can decode at full resolution. Any container change happens on the device.Apple's playersends the file
Re-encoded on this deviceFormats Apple's player can't read, when this device can convert them in real time.Tomo TV, on this devicesends the file
Transcoded by the serverFiles this device can't play, or a smaller stream on a slow connection, if your server and Settings allow it.your servertranscodes it

On a fast connection, your server just sends the original file. On a slow one, streaming adapts: playback switches to a smaller stream from the server, with stereo AAC audio, and goes back to the original once the connection recovers, without restarting. Dolby Atmos and lossless surround need the original.

The Server transcoding setting controls how much the server does. When needed, the default, allows those smaller streams. Only for unsupported files keeps the original even if it buffers. Off plays only what the device supports. A quality preset (480p, 540p, 720p, 1080p or 4K) limits server transcodes; files that play directly are never downscaled.

Lab note: when should a Jellyfin client transcode?

Tomo TV Settings on Apple TV: the connected Jellyfin server and a SyncPlay row, a Streaming section with the measured link speed at its head over a single Server transcoding row showing its level, and a UI section with Language and Appearance
link speed and server transcoding

05 / Offline downloads

Watch without a connection

Download a movie, an episode, a whole folder or an album and play it with no network at all. Keep the original, or a smaller copy at 1080p, 720p or 480p that your server converts on the way down, in your audio language with the subtitle you would see. Originals can be paused and resumed, and a storage gauge shows how much space downloads use and how much is left. iPhone, iPad and Mac

The Downloads tab on iPad: the Veguitas folder expanded into its episodes, three of them paused mid-download with a resume arrow, and the storage gauge at the foot of the card
downloads, on iPad
The same Veguitas folder in the Downloads tab on iPhone, every episode finished and ready to play, and the storage gauge at the foot of the card
downloads, on iPhone

Music and audiobooks download the same way and play in a native queue with gapless playback, and Apple Lossless and FLAC stay lossless. On iPhone, playback continues in the background with Lock Screen controls, and on iPhone, iPad and Mac a mini player stays on screen while you browse.

06 / Search and filters

Search by title, genre, artist or year. Movies and episodes appear together, and matching live channels and programs airing through tomorrow lead the same grid. Join two searches with a plus, as in veguitas + house, to see what either finds.

Search on Apple TV for veguitas + house: the query above a single row of letters, and one grid of cards that opens with a Veguitas episode airing on a channel, marked NOW, and House on Haunted Hill airing today at 6:00 PM, ahead of the matching Veguitas episodes and the film itself
one row of letters, not a grid keyboard

Filter any library by watched status, genre and year, or shuffle it.

The Filters screen on Apple TV, applied to the whole Films library: Status, Sort, Genres and Years as rows of pills with Favorite, Shuffle and Family selected, and a Clear All button at the top
status, sort, genre, year

Start in minutes

  1. Install Tomo TV from the App Store on your Apple TV, iPhone, iPad or Mac. You need a Jellyfin server with your media and an account on it.
  2. Connect your server. Scan Network finds servers on your local network, or you can enter an address like http://192.168.1.100:8096. Addresses behind a reverse proxy, such as 10.0.0.5/jellyfin, work too.
  3. Sign in with your Jellyfin username and password, or with Quick Connectfrom a device that's already signed in.

If a connection fails, the app lists every address it tried and why each one failed. You can save as many servers and accounts as you like and switch between them in one tap. To try the app without a server, press Go on the empty Add Server field to connect to Jellyfin's public demo.

Tomo TV's server screen on Apple TV: a Scan Again row reporting one server found, Add Server, two saved Jellyfin servers, the saved sign-ins as avatars alongside, and a Sign Out row at the foot
servers and sign-ins, on Apple TV

Formats

MKV, MP4, AVI, MOV and TS. The codec, the device and the connection decide whether a stream is copied or converted.

Video, played as stored

  • H.264
  • HEVC
  • HDR10
  • HLG
  • Dolby Vision P8.1
  • Dolby Vision P8.4
  • AV1 (where the chip decodes it)

Video, converted on the device

  • Dolby Vision P7 (as P8.1)
  • AV1 (elsewhere)
  • VVC / H.266
  • VP8
  • VP9
  • VP3 to VP7
  • MPEG-1
  • MPEG-2
  • MPEG-4
  • Xvid
  • DivX 3
  • WMV
  • VC-1
  • H.263
  • H.261
  • FLV
  • RealVideo
  • Theora
  • Cinepak
  • DV
  • AVS1
  • AVS3
  • ProRes
  • DNxHD
  • CineForm
  • MJPEG
  • FFV1
  • FFVHuff
  • MagicYUV
  • Lagarith
  • SheerVideo
  • JPEG 2000
  • JPEG-LS
  • HuffYUV
  • UT Video
  • Indeo
  • RPZA
  • TrueMotion
  • Sorenson
  • Camtasia
  • QuickTime RLE
  • Microsoft Video 1
  • MS RLE
  • Hap
  • DXV
  • Snow

Audio, played as stored

  • Dolby Digital
  • Dolby Digital Plus
  • Dolby Atmos
  • AAC
  • Apple Lossless
  • FLAC

Audio, converted to FLAC

  • TrueHD
  • DTS
  • DTS-HD Master Audio
  • PCM
  • MP3
  • Opus
  • Vorbis
  • WMA
  • RealAudio
  • ATRAC
  • WavPack
  • Monkey's Audio
  • TAK
  • Shorten
  • Musepack
  • MP2 and MP1
  • Speex
  • AMR
  • ADPCM
  • QDesign
  • Dolby E
  • ALS
  • TTA

Subtitles

  • SRT
  • Embedded text
  • ASS / SSA
  • PGS
  • DVD / VobSub
  • DVB
  • XSUB
  • Teletext (live)
  • CEA-608 / 708 captions (live)

Books

  • PDF
  • EPUB
  • MOBI
  • AZW / AZW3
  • CBZ
  • CBR
  • CBT
  • CB7

Anything not listed plays from your server instead.

Requirements

  • Apple TV running tvOS 16.4 or later
  • iPhone or iPad running iOS or iPadOS 16.4 or later
  • Mac running macOS 13.4 or later, Apple Silicon or Intel
  • The iPad app also installs on Apple Vision Pro, where it runs as the iPad app
  • Jellyfin server 10.8+
  • Server transcoding (FFmpeg) is optional; the device plays most files on its own
  • Skip Intro, Skip Credits and Skip Commercial need Jellyfin 10.10+ and a segments provider plugin
  • Live TV needs a tuner and a guide source set up on your server; a channel protected by FairPlay, Widevine or PlayReady won't play
  • Free, with no in-app purchases

Troubleshooting

A video won't play
The error screen shows an error code and, if the file needed the server, whether transcoding was turned off for your account or in the app's Server transcoding setting. On the server, transcoding is under Dashboard → Playback → Transcodingand requires FFmpeg; each user's transcoding permission is in their user settings. Diagnostics records the same code for a bug report.
Can't reach a server
Include the port, as in http://192.168.1.100:8096. HTTP is fine on a local network; for access from outside your home, use HTTPS with a valid certificate.
Buffering or slow playback
Set Server transcoding to When needed with quality on Auto, and allow transcoding on your server. Playback then switches to a smaller stream on a slow connection and back on its own. With Only for unsupported files or Off, a slow connection buffers instead.

Privacy

Tomo TV collects nothing about you. It has no analytics, no tracking, no ads, no crash reporting of its own, and no account with us. It collects no data from anyone.

What the app keeps, it keeps on your device: the address of each server you add, your sign-in for it in the device Keychain, one entry per server and account, the files you download, the measured speed of your link to each server, the last playback session for Diagnostics, each account's Live TV favorites and channel groups, the XMLTV guides it downloads, the frames and short clips it records of each channel for the guide, the lyrics it has found for each song, and the posters it makes from your videos when the server has none. None of that is sent to us. Deleting the app deletes all of it.

The app talks to the Jellyfin servers you add, to Jellyfin's public demo server when you connect to it (an empty Add Server field, or Try Demo Server when your library can't load), to the XMLTV guide addresses you or your tuner's playlists list, and to a live channel's own source when the device can read it directly. Those servers see your sign-in, what you play and how far you got, under their own operators' policies. When your server has no lyrics for a song, lrclib.net is asked for them and gets only the song's artist, title and length; turn off Find missing lyricsto stop it. The first time the app listens to a song in a language, the system downloads Apple's speech model for it; the listening itself stays on the device. Video and audio stream straight to your device from your server or the channel's source, with no server of ours in between.

Tomo TV is made by Keiver Hernandez. Questions about privacy go to contact@keiver.dev. The website hosting this page has its own policy, covering the site rather than the app: keiver.dev privacy policy.

Support

Questions, bugs or feedback: contact@keiver.dev. Attach the Diagnostics log if you can: Settings, About Tomo TV, Diagnostics, then Copy on iPhone, iPad or Mac. Issues are also welcome at github.com/keiver/tomotv/issues.

Terms of use

Tomo TV is a player for a Jellyfin server you run or have been given access to. It hosts no media, distributes none, and ships with no content of its own. You are responsible for the media on your server, for having the right to play it where you live, and for how you use the app. We are not responsible for how the client is used.

Live TV works the same way. The app provides no channels, playlists or guides: it plays the channels your server's tuners list and reads the guide addresses you or their playlists add. You are responsible for having the right to access every source you add. Do not use the app to watch or record anything you have no right to.

The app is free and provided as is, without warranty of any kind, under the MIT License in its repository. To the extent the law allows, we are not liable for any loss or damage arising from its use.

If you believe this page or the app's listing uses your work or your mark without permission, write to contact@keiver.dev and it will be looked at promptly.

Tomo TV is a free, open-source, independent client for Jellyfin and is not affiliated with or endorsed by the Jellyfin project. Jellyfin is a trademark of its respective owner. Apple, Apple TV, iPhone, iPad, Mac, AirPlay and App Store are trademarks of Apple Inc. Dolby, Dolby Atmos and Dolby Vision are trademarks of Dolby Laboratories Licensing Corporation. DTS and DTS-HD are trademarks of DTS, Inc. All other marks belong to their owners.

The screenshots show Blender open movies under their Creative Commons licenses: Big Buck Bunny, © 2008 Blender Foundation | bigbuckbunny.org (CC BY 3.0); Elephants Dream, Blender Foundation | orange.blender.org (CC BY 2.5); Sintel, © Blender Foundation | durian.blender.org (CC BY 3.0); Tears of Steel, (CC) Blender Foundation | mango.blender.org (CC BY 3.0); Cosmos Laundromat, (CC) Blender Foundation | gooseberry.blender.org (CC BY 3.0); Spring, © Blender Foundation | cloud.blender.org/spring (CC BY 4.0); Caminandes, Blender Foundation | caminandes.com (CC BY 3.0); and The Daily Dweebs, Blender Animation Studio | dailydweebs.com (CC BY-SA 4.0). Sita Sings the Blues is by Nina Paley, dedicated to the public domain under CC0. The General, His Girl Friday, Jungle Book, Utopia (shown under its other title, Robinson Crusoeland), House on Haunted Hill, Carnival of Souls, Charlie Chaplin Festival, The Fast and the Furious (1955) and Voyage to the Planet of Prehistoric Women are in the public domain in the United States.

Open Source

Built on open source

The playback engine and the book reader link these libraries unmodified, as static archives. FFmpeg is used under the LGPL version 3. The exact binaries in the app are built by scripts/ffmpeg/build.sh in the Tomo TV repository from the versions pinned in scripts/ffmpeg/sources.sh, and published with their checksums at github.com/keiver/tomotv. The complete source of each library is available from the project links below; for the source or build of a particular release, ask at contact@keiver.dev. Full license texts are in the app under Settings → Open Source.

  • FFmpeg (libavformat, libavcodec, libavutil, libswresample, libswscale, libavfilter), LGPL 3.0, container remuxing, audio and video decoding, and pixel conversion
  • Mbed TLS (Apache 2.0), TLS for the engine's https connections to your server
  • dav1d (BSD 2-Clause), AV1 decoding, and uavs3d (BSD 3-Clause), AVS3 decoding
  • libass (ISC), linked into the FFmpeg build for its subtitle filters, with FreeType (FreeType License), HarfBuzz (MIT) and GNU FriBidi (LGPL 2.1+) beneath it
  • libzvbi (LGPL 2.0+), teletext subtitle decoding on live channels
  • libxml2 (MIT), DASH manifest parsing on live channels, linked from the system
  • libarchive (BSD 2-Clause), with XZ Utils (0BSD), reading comic archives and EPUB containers in the book reader
  • foliate-js (MIT), its MOBI and KF8 parser ported to Swift for the book reader
  • React Native (react-native-tvos) and Expo (MIT), the application framework and native module ecosystem
  • React Native Video (MIT), the video player component