Switchfin: Jellyfin client for Nintendo Switch

Switchfin is third-party PC player for Jellyfin that provides a native user interface to browse and play movies and series.

Project repository|Stable Build|Nightly Build

This project is in its early stages so expect bugs.

Screenshots​


HomeLibrary
Home
Library
SearchMusic
Search
Music
SeriesEpisode
Series
Episode

Features​

  • Completely native interface
  • Supported media items: movies, series, seasons, episodes
    • Direct play and transcoding
  • Base on MPV Player
    • Container formats: mkv, mov, mp4, avi
    • Video codecs: H.264, H.265, VP8, VP9, AV1
    • Audio codecs: Opus, FLAC, MP3, AAC, AC-3, E-AC-3, TrueHD, DTS, DTS-HD
    • Subtitle codecs: SRT, VTT, SSA/ASS, DVDSUB
    • Optionally force software decoding when hardware decoding has issues.

Input mapping during playback

  • A Play/Pause
  • B Stop during
  • Y Toggle OSD
  • X Show Menu
  • R/L Seek +/-
  • L Stick Button Toggle Speed Select
  • R Stick Button Toggle Video Quality Select
  • + Show video profile

ChangeLog​


0.8.3 (2016-02-02)
fix json parse failed when SeriesId is null
add bonus video view for series tab
add add home tab retry dialog when request failed

0.8.2 (2025-12-20)
fix thumb image for episodes on home page
add refresh support for dashboard
add option of ui scale
add add spanish/french localization

0.8.1 (2025-12-09)
stability improvement
adjust dashboard view
add program tab for livetv

0.8.0 (2025-12-06)
fixed webdav client for clouddrive2
refactor home tab for split media
add dashboard tab for view devices, activities etc.
video profile add subtitle codec

0.7.7 (2025-11-17)
compatibility update for 21.0.0
adjust direct play logic

0.7.6 (2025-10-22)
fix login issue on jellyfin 10.11
improve tls1.3 support by mbedtls

0.7.5 (2025-09-17)
add song/artist tab for music
support receive media files as args
i18n: add russian localization @wildrun0

0.7.4 (2025-07-25)
fix LiveTV not working

0.7.2 (2025-06-21)
fixed audio/sub selection when transcode
fixed resume play on movie tab

0.7.1 (2025-05-26)
add suggest/genres tab for collection
fix image load for search sugguest
fix series/movie view logo layout

0.7.0 (2025-05-16)
refactor series view layout
add people view of series/movie
add Brazilian Portuguese localization (@brunorossetto)
add external drive support
fix remote load large file list
use mpv watch-later for remote

0.6.3 (2025-03-12)
add player option for video rotate
add photo viewer support
upgrade ffmpeg 7.1.1
websocket close gracefully

0.6.2 (2025-02-27)
fix strm format support
search suggest include `MusicAlbum`
improve image load speed
optimize auto quality option
add mirror play support
add korean localization
add psvita gxm support

0.6.1 (2024-12-22)
ignore save resume on m3u playlist
ignore save window stat when fullscreen
fix websocket support on switch

0.6.0 (2024-12-7)
add japanese localization (@yyoossk)
add vietnamese localization (@tlover-code)
support modify server url
remote add ftp/sftp support
remote add resume history
fix loading osd when change episode
fix update server info when check login
fixaudio load failed when proxy enabled
fixnavigate route of video view
fix focus logic of lock button

0.5.3 (2024-10-27)
save windows state when exit
support touch input on linux (@xfangfang)
support paste text to search input (@xfangfang)
new option low quality
new option subtitle fallback
support custom user-agent in webdav browser
http server support for remote
support loading custom emoji font
fixed empty tab when search failed

0.5.1 (2024-7-30)
upgrade ffmpeg 7.0.1
add highlight for current play track
add live tv support
add webdav file browser
fixed network timeout for load video
fixed panic after cancel login
fixed abnormal focus when login after add server
fixed server list url display

0.5.0 (2024-5-22)
add danmu plugin integration
add video flip and subtitle sync support for player
add video equalizer setting
add episode selector on player view
add new option `Always on top` for desktop platform
add Czech localization
support `MusicView` and `PlayList`
forward nsp add startup logo

0.4.4 (2023-1-28)
add proxy option for http request
sync filter setting with official media player
add setting entry from server add tab
fix osd lock touch gesture
fix wrong toggle icon after seek when paused
fix crash when open filter

0.4.3 (2023-1-19)
add logout from setting tab
player view add touch gesture
upgrade ffmpeg 6.1.1
fix series tab viewed badge
fix device name under macOS

0.4.2 (2023-1-09)
add close button for series/collection
add lock button for player view
auto hide osd on loading end
fix login disclaimer after switch server
fix cannot trigger loading next page after refresh

0.4.1 (2023-11-26)
add tap control for progress slider
add volume control for video
add play progress on more page
add login disclaimer display
fixed server selection by joystick
fix home tab auto refresh

0.4.0 (2023-11-16)
add music album support*
save video quality to config
add option of player_inmemory_cache
improve password input
fix option for speed control
fix osd show timeout

0.3.4 (2023-11-10)
add option for open debug layer
add support of clear search history
improve url check for server add
fix osd navigate with dpad/analog stick

0.3.3 (2023-11-8)
movie collection support
add filter for media collection
add speed up feature when pressed on
add play/stop action when double click
upgrade ffmpeg to release/6.1

0.3.2 (2023-9-27)
add new option forceDirectPlay
support chapter select
support subtitle/audio track selection on transcode play
fix trancode codec type
fix crash on exit when playing media

0.3.1(2023-9-18)
switch: FFmpeg: support vp9 hwdec
server list support user selection
login quick connect support
fix crash when http exception

0.3.0 (2023-9-8)
switch: FFmpeg: Update to 6.0 with hwaccel backend, Thanks to averne
set mpv option subs-fallback to yes
complete server list selector
fix searies tab layout
fix search result not update when delete charactor
fix: setting selection which required restart

If external subtitle didn't display correctly, please put your font to /switch/Swichfin/subfont.ttf
Post here any kind of bug/suggestions.
Enjoy!

Thanks to​

 
Last edited by dragonflylee,
Hey, I have the latest build installed, scrolled through a bit and started a short film. Here is the shot of the debug view.
It also says that there are two configs. Where can I find them so that I can delete one?
well, "two configs" has no relationship with the image issue. can you keep the debug view on, then enter into the view which cause images problem
 
It says only : request image operation was aborted by anapplication callback
Yes, as you started a short film before image load complete, so log print
aborted by anapplication callback
But this log has no relationship with the image issue for collection page too.

Please keep the debug view on, then enter into the collection view which cause images problem
 
Yes, as you started a short film before image load complete, so log print

But this log has no relationship with the image issue for collection page too.

Please keep the debug view on, then enter into the collection view which cause images problem
So no matter what I do, or no matter which menu or something similar I go to, the same thing always happens. No matter how long I wait or something similar.
 
Hi, I believe there is still no support for .strm files since none of my movies work and I get the error "timeout was reached".
Is there anything I can do to solve this or just wait for future updates?
 
I cannot get any of my movies to play words. All regular sounds work like music, walking, etc, but no words :( the movies work on my iPhone and Apple TV but no options work to get the words to work somehow.
 
for some reason even though i just updated atmosphere to make sure everything was fully updated i launched jellyfin on my switch typed in my servers address and it says invalid address but all other devices on my network launch jellyfin just fine can someone help me get this thing working?
 
for some reason even though i just updated atmosphere to make sure everything was fully updated i launched jellyfin on my switch typed in my servers address and it says invalid address but all other devices on my network launch jellyfin just fine can someone help me get this thing working?
make sure the servers address is start with http:// or https://
 
Silly question: One of the things I like about Plex is remote access from anywhere. I just got done setting up Tailscale with my phone (so I can stream remotely), but is there any way to set up Switchfin/Jellyfin so I can remotely access my media outside of my home network?

I did a cursory search on Tailscale + Android TV (LineageOS 22 TV is my Android flavor on Switch ATM,) but it appears Android TV is having issues keeping the Tailscale service live (in the background,) so I was trying to see if this could be accomplished through Switchfin instead.
 
Silly question: One of the things I like about Plex is remote access from anywhere. I just got done setting up Tailscale with my phone (so I can stream remotely), but is there any way to set up Switchfin/Jellyfin so I can remotely access my media outside of my home network?

I did a cursory search on Tailscale + Android TV (LineageOS 22 TV is my Android flavor on Switch ATM,) but it appears Android TV is having issues keeping the Tailscale service live (in the background,) so I was trying to see if this could be accomplished through Switchfin instead.
if you do not have public address , https://github.com/heiher/natmap is useful for you
 
  • Like
Reactions: Stroopwaffel
Silly question: One of the things I like about Plex is remote access from anywhere. I just got done setting up Tailscale with my phone (so I can stream remotely), but is there any way to set up Switchfin/Jellyfin so I can remotely access my media outside of my home network?

I did a cursory search on Tailscale + Android TV (LineageOS 22 TV is my Android flavor on Switch ATM,) but it appears Android TV is having issues keeping the Tailscale service live (in the background,) so I was trying to see if this could be accomplished through Switchfin instead.
My setup is tailscale + a domain that point to a reverse proxy server on my home setup. It might be a bit complicated at first to setup but once you get the hang to it, you can access your media from anywhere and it's fairly secure. The domain is setup to point to a local ip address so it's safe from prying eye, and with tailscale. Switchfin won't be able to this on it's own but it you have install tailscaled on a mobile device, if you create a hotspot and connect your switch you should be able to stream without issue, considering your have a good bandwith
 
My setup is tailscale + a domain that point to a reverse proxy server on my home setup. It might be a bit complicated at first to setup but once you get the hang to it, you can access your media from anywhere and it's fairly secure. The domain is setup to point to a local ip address so it's safe from prying eye, and with tailscale. Switchfin won't be able to this on it's own but it you have install tailscaled on a mobile device, if you create a hotspot and connect your switch you should be able to stream without issue, considering your have a good bandwith
I've got Tailscale setup and I'm able to run it to most devices that have Tailscale available. I'm just not sure how to do the reverse proxy server bit. I read into a bit about subnet domains, but I was wondering if you had any good reading material available.

I have a phone that's connected through Tailscale, and unlimited data (lower priority, but I live in a small town so no biggie.) Literally my only issue is bridging the gap to remote non-Tailscale devices.
 
there as 2 things to consider :
first is using tailscale as a subnet router to allows certain device that cannot have tailscale to be accessed : for instance you can't access your nintento switch or an IOT device.
the second thing is to setup a reverse proxy server that will convert FQDN into IP address.

so for in my case, tailscale is acting as a subnet router and redirects my connection to my home network. If I'm at work or on the go, once I open my tailscale vpn, I can ping my local devices that are at home, such as my jellyfin server ( in my case http://10.0.0.127:8096).

the reverse proxy server that is hosted on a docker container is (10.0.0.60)

i've setup a domain and have pointed the domain name to the reverse proxy server ( 10.0.0.60).

in the proxy server, I've created an address for jellyfin so that when in my browser I type media.djakku.net (for example) , the reverse proxy points it to 10.0.0.127:8096

on the switch on my android device, instead of putting the ip address, i put media.djakku.net.

have a look at this article, it's not exactly covering the scope of what you're trying to achieve but you would see how to setup the reverve proxy server.
this plus tailscale is a good match for my use case although it was a big learning curve, I am satisfied with the result so far.

https://www.wundertech.net/local-ssl-for-home-lab-services-nginx-proxy-manager/
Post automatically merged:

@dragonflylee ,

thank you for the amazing switchfin application btw, I have a switch dedicated to media thanks to your work. I also am very grateful for the application that came before and after, namely nxmp from @proconsule54 and switchwave from @averne

you did what nintendodidn't :rofl:
 

Site & Scene News

Popular threads in this forum