Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

FourthTube 3DS: Difference between revisions

From GameBrew
Created page with "{{Infobox 3DS Homebrews |title=FourthTube |image=Thirdtube3ds02.png |description=Another work-in-progress fork of the homebrew YouTube client for the 3DS called ThirdTube. |author=erievs |lastupdated=2025/01/21 |type=Media Players |version=beta 30 |license=GPL-3.0 |download=https://dlhb.gamebrew.org/3dshomebrews/FourthTube3DS.7z |website=https://gbatemp.net/threads/fourthtube-for-now-a-fork-of-thirdtube-that-works.660775/ |source=https://github.com/erievs/FourthTube |don..."
 
b34.1
 
(14 intermediate revisions by 2 users not shown)
Line 3: Line 3:
|image=Thirdtube3ds02.png
|image=Thirdtube3ds02.png
|description=Another work-in-progress fork of the homebrew YouTube client for the 3DS called ThirdTube.
|description=Another work-in-progress fork of the homebrew YouTube client for the 3DS called ThirdTube.
|author=erievs
|author=Erie Valley Software
|lastupdated=2025/01/21
|lastupdated=2026/02/06
|type=Media Players
|type=Media Players
|version=beta 30
|version=Beta 34.1
|license=GPL-3.0
|license=GPL-3.0
|download=https://dlhb.gamebrew.org/3dshomebrews/FourthTube3DS.7z
|download=https://dlhb.gamebrew.org/3dshomebrews/FourthTube3DS.7z
Line 19: Line 19:
|image_alt=FourthTube
|image_alt=FourthTube
}}
}}
FourthTube is a fork of a previous application called [[ThirdTube 3DS]], which had become non-functional around July 2024. The developer of FourthTube, also known for creating NexTube, collaborated with members of the ThirdTube Discord server to implement a fix, resulting in the creation of FourthTube.  
FourthTube is a fork of [[ThirdTube 3DS|ThirdTube]], which had become non-functional around July 2024. The developer of FourthTube, also known for creating NexTube, collaborated with members of the ThirdTube Discord server to implement a fix, resulting in the creation of FourthTube.  


ThirdTube functioned by utilizing a decrypter and manipulating certain JavaScript files to access YouTube's player without encountering access issues. However, this method proved to be unstable over time. In contrast, FourthTube employs a different approach by sending data that mimics the iOS YouTube app, a technique also used by tools like YT-DLP. This method enhances stability and ensures better compatibility with YouTube's services.  
ThirdTube uses a decrypter and manipulates certain JavaScript files to access YouTube's player without encountering access issues. FourthTube on the other hand employs a different approach by sending data that mimics the iOS YouTube app, a technique also used by tools like YT-DLP.


Despite these improvements, users have reported that the application may still experience crashes during video playback. The development team is aware of these issues and has outlined plans to address them in future updates. Their to-do list includes renaming the application, implementing stability fixes, and resolving caption-related issues.  
[https://github.com/erievs/FourthTube/blob/main/README.md#notice-as-of-the-4th-of-february-2026-on-playback Notice As Of The 4th Of February, 2026 On Playback].


== Features ==
== Features ==
* Video Playback up to 480p
* Video Playback up to 480p.
* Livestreams and premiere videos support
* Livestreams and premiere videos support.
* Searching
* Searching.
* Video suggestion
* Video suggestion.
* Comments
* Comments.
* Captions
* Captions.
* Local watch history and channel subscription
* Local watch history and channel subscription.
* No ads<br />
* No ads.
It's more like &quot;Ads are not implemented&quot; rather than &quot;We have ad-blocking functionality&quot;.<br />
 
Of course, we will never &quot;implement&quot; it :)
==Installation==
Requires 3DS (including 2DS) with [[Luma3DS]] (at least 8.1.0-0) and [[DSP1 3DS|DSP1]].
 
To migrate data from [[ThirdTube 3DS|ThirdTube]] to FourthTube, rename the /3ds/ThirdTube/ folder to FourthTube. If you were using an unofficial fork of ThirdTube (such as a translation), this folder may be named differently.


== Controls ==
== Controls ==
* B button : go back to the previous scene
B - Go back to the previous scene
* C-pad up/down : scroll
 
* L/R : switch between tabs
Circle Pad Up/Down - Scroll
* Select + Start : blackout the bottom screen
 
* In video player
L/R - Switch between tabs
** Arrow left/right : 10 s seek
 
** ZL/ZR : 5 s seek
Select+Start - Blackout the bottom screen
 
'''In video player:'''


Below are for debug purposes
Left/Right - 10s seek


* Select + X : toggle debug log
ZL/ZR - 5s seek
* Select + Y : toggle memory usage monitor
* Select + R + A : toggle FPS monitor


== Requirements ==
'''Debugging:'''
* A 3DS (including 2DS) with [[Luma3DS]] installed and [DSP1 3DS]] run.
* We haven't tested the minimum system version, but at least 8.1.0-0 is needed.


==Screenshots==
Select+X - Toggle debug log
https://dlhb.gamebrew.org/3dshomebrews/images/FourthTube3DS-01.png
 
Select+Y - Toggle memory usage monitor


https://dlhb.gamebrew.org/3dshomebrews/images/FourthTube3DS-02.png
Select+R+A - Toggle FPS monitor


==Screenshots==
https://dlhb.gamebrew.org/3dshomebrews/images/FourthTube3DS-03.png
https://dlhb.gamebrew.org/3dshomebrews/images/FourthTube3DS-03.png


==Changelog==  
==Changelog==
'''beta 30'''
'''Beta - 34.1'''
* Added option to switch app data (iOS, Android VR) to Settings -> Advanced
* TO PEOPLE WHO ARE UPDATING PLEASE SWITCH TO ANDROID VR IN THE ADVANCE TAB IN SETTINGS YOUR SETTINGS WON'T BE AUTO UPDATED, ANDROID VR WILL ONLY BE DEFAULT IF YOU DIDN'T HAVE ANY SAVE DATA
* Update iOS client
* erievs &amp; Smu1zel (helped me build the release) &amp;&amp; 2ipper (a lot)
* Added visitor data (YouTube requests) (Comment From Me ErieVS: I have no idea why I didn't think about doing this to begin with, I used it with MangoTube, guess I just forgot, anwyas huge thanks to 2ipper for this fix!)
** Add the current version to the update header in settings updater.
** Switched the default agent from Android to Android VR, so videos will play again, do note VR does NOT support YouTube kids content. A better solution is being worked on, this is a stopgap update really.
** A lot more, I'll update as I learn more, oops.
'''Beta - 34'''
* Smu1zel
** The screen timeout feature now only turns off the bottom screen. This means you no longer have to set it to Never to make the app usable.
** The iOS client has been removed in favor of Android (with some iOS parameters since that works for some reason). This works with all videos that the iOS client originally supported. visionOS should no longer be preferred due to YouTube blocking Kids videos on it as of September or so. If you used it as a workaround in 33, please switch back. This may also fix video playback in certain regions, but I don't know for certain.
'''Beta - 33'''
* Smu1zel
** Better error screen.
** Formatted the entire codebase with clang-format.
** Added an option to hide the pointer (the red box when you tap the screen).
** FourthTube now uses a better color scheme, instead of using a dull blue nearly everywhere.
** New banner for when a video isn't playing. Criticism is welcome.
** Old ThirdTube config files now retain the scroll speed threshold value set when used in FourthTube.
** Dropped the unused unicodetochar library.
** Changed some font sizes.
** Deleted some obsolete files.
** Changed libctru library path to his. Updated it.
** Some other general improvements to enhance the user's experience (TM)
* 2ipper
** Fixed the community tab.
** Added timestamps. Tapping them in the description or comments will jump you to that timestamp automatically.
** Added Live tab.
** Added Shorts tab.
** Changed the color of the Reload button.
** Removed useless randomVisitorData function.
** Translated the &quot;Hide pointer&quot; string into Japanese.
** Added better resolution detection logic.
** Fixed a bug where a video would end a few seconds early.
* Dragontwo14
** Made some fixes to the German translation.
** Translated the &quot;Hide pointer&quot; string into German.
* cooolgamer
** Translated the &quot;Hide pointer&quot; string into French.
* Dxni
** Translated the &quot;Hide pointer&quot; string into Italian.
* Misino
** Added a Spanish translation (will be implemented in the future).
'''Beta - 32'''
*Smu1zel
** Added an Italian translation (with help from Dxni)
** Updated stb_image
** Fixed some annoying spelling errors in the English translation
** Lowered the minimum speed limit for videos to 0.25 (to match YouTube)
** Improved the German translation (with help from Dragontwo14)
** Refactored time unit handling in the New tab
*2ipper
** Fixed up the changelog feature
** Fixed occasional performance issues when streaming &gt;240p on clients other than iOS
** Fixed the banner spin
** Other misc fixes
'''Beta - 31'''
* Smu1zel
** Rewrote community posts workaround to take advantage of Google's parameters (images load much faster and take up less memory, at the cost of a small drop in quality).
** Added code to wait up to 20 seconds for the 3DS to connect to Wi-Fi at launch (avoids some race conditions).
** Added visionOS app/spoof data.
** Upgraded nghttp2 to version 1.64.0.
** Some more QoL internal improvements to enhance the developer's experience.
* 2ipper
** Added code to fetch visitorData from YouTube's servers directly (fixes the infamous gray Play button again).
** Added the ability to see the latest changelog in the Update tab.
** Fixed subscriber count in the Subscribed tab.
** Search fixes.
* cooolgamer
** Created a custom boot screen.
 
'''Beta - 30'''
* Added option to switch app data (iOS, Android VR) to Settings -> Advanced.
* Update iOS client.
* Added visitor data (YouTube requests). (Comment From Me ErieVS: I have no idea why I didn't think about doing this to begin with, I used it with MangoTube, guess I just forgot, anwyas huge thanks to 2ipper for this fix!)


== Credits ==
== Credits ==
=== FourthTube ===
'''FourthTube credits:'''
* Core 2 Extreme<br />
*[https://github.com/windows-server-2003 WindowsServer2003] - The creator of ThirdTube.
For [https://github.com/Core-2-Extreme/Video_player_for_3DS Video player for 3DS] which this app is based on.<br />
*[https://github.com/Smu1zel Smu1zel] - Figured out the line of code that needed to be changed and tested the change out, fixing the app after it stopped working in 2024.
Needless to say, the video playback functionality is essential for this app, and it would not have been possible to develop this software without him spending his time optimizing the code sometimes even with assembly and looking into HW decoding on the new 3DS.
*[https://github.com/erievs NCP 3.0] - Fixing the app after it stopped working in 2024.
* dixy52-beep<br />
*[https://github.com/5GBurrito 5GBurrito] - Minor changes (project manager?).
For in-app textures
*[https://github.com/2b-zipper 2b-zipper] - New banner, watch history fix, new icon, 480p support, some other fixes, and a fair bit more (thank you so much!).
* [https://github.com/Poketubepoggu PokéTube]<br />
*[https://github.com/ItsFrocat ItsFrocat] &amp; [https://github.com/Dragontwo14 Dragontwo14] - For the strings used in the German translation.
For the icon and the banner
*[https://github.com/cooolgamer cooolgamer] - For the strings used in the French translation, as well as a custom boot screen.
* The contributors of [https://github.com/ytdl-org/youtube-dl youtube-dl]<br />
*[https://github.com/Icee666 Dxni] - For the strings used in the Italian translation.
As a reference about YouTube webpage parsing. It was especially helpful for the deobfuscation of ciphered signatures.
*[https://returnyoutubedislike.com/install returndislike] - Used for dislikes.
* The contributors of [https://github.com/pytube/pytube pytube]<br />
As a reference about YouTube webpage parsing. Thanks to its strict dependency-free policy, I was able to port some of the code without difficulty.


=== ThirdTube ===
'''ThirdTube credits:'''
* [https://github.com/windows-server-2003 WindowsServer2003] - The creator of ThirdTube.
* Core 2 Extreme - For [https://github.com/Core-2-Extreme/Video_player_for_3DS Video player for 3DS] which this app is based on. Needless to say, the video playback functionality is essential for this app, and it would not have been possible to develop this software without him spending his time optimizing the code sometimes even with assembly and looking into HW decoding on the new 3DS.
* [https://github.com/Smu1zel Smu1zel] - Figured out the line of code that needed to be changed and tested the change out, fixing the app after it stopped working in 2024.
* dixy52-beep - For in-app textures.
* [https://github.com/erievs NCP 3.0] - Fixing the app after it stopped working in 2024.
* [https://github.com/Poketubepoggu PokéTube] - For the icon and the banner.
* [https://github.com/5GBurrito 5GBurrito] - Minor changes (project manager?).
* The contributors of [https://github.com/ytdl-org/youtube-dl youtube-dl] - As a reference about YouTube webpage parsing. It was especially helpful for the deobfuscation of ciphered signatures.
* [https://github.com/2b-zipper 2B_enpitsu] - New banner, watch history fix, new icon, 480p support, some other fixes, and a fair bit more (thank you so much!).
* The contributors of [https://github.com/pytube/pytube pytube] - As a reference about YouTube webpage parsing. Thanks to its strict dependency-free policy, I was able to port some of the code without difficulty.
* [https://github.com/ItsFrocat ItsFrocat] &amp; [https://github.com/Dragontwo14 Dragontwo14] - For the strings used in the German translation.
* [https://github.com/cooolgamer cooolgamer] - For the strings used in the French translation.
* [https://returnyoutubedislike.com/install returndislike] - Used for dislikes.


== External links ==
== External links ==
* Gbatemp - https://gbatemp.net/threads/fourthtube-for-now-a-fork-of-thirdtube-that-works.660775/
* GitHub - https://github.com/erievs/FourthTube
* Github - https://github.com/erievs/FourthTube
* GBAtemp - https://gbatemp.net/threads/fourthtube-for-now-a-fork-of-thirdtube-that-works.660775/

Latest revision as of 10:45, 6 February 2026

FourthTube
General
AuthorErie Valley Software
TypeMedia Players
VersionBeta 34.1
LicenseGPL-3.0
Last Updated2026/02/06
Links
Download
Website
Source

FourthTube is a fork of ThirdTube, which had become non-functional around July 2024. The developer of FourthTube, also known for creating NexTube, collaborated with members of the ThirdTube Discord server to implement a fix, resulting in the creation of FourthTube.

ThirdTube uses a decrypter and manipulates certain JavaScript files to access YouTube's player without encountering access issues. FourthTube on the other hand employs a different approach by sending data that mimics the iOS YouTube app, a technique also used by tools like YT-DLP.

Notice As Of The 4th Of February, 2026 On Playback.

Features

  • Video Playback up to 480p.
  • Livestreams and premiere videos support.
  • Searching.
  • Video suggestion.
  • Comments.
  • Captions.
  • Local watch history and channel subscription.
  • No ads.

Installation

Requires 3DS (including 2DS) with Luma3DS (at least 8.1.0-0) and DSP1.

To migrate data from ThirdTube to FourthTube, rename the /3ds/ThirdTube/ folder to FourthTube. If you were using an unofficial fork of ThirdTube (such as a translation), this folder may be named differently.

Controls

B - Go back to the previous scene

Circle Pad Up/Down - Scroll

L/R - Switch between tabs

Select+Start - Blackout the bottom screen

In video player:

Left/Right - 10s seek

ZL/ZR - 5s seek

Debugging:

Select+X - Toggle debug log

Select+Y - Toggle memory usage monitor

Select+R+A - Toggle FPS monitor

Screenshots

FourthTube3DS-03.png

Changelog

Beta - 34.1

  • TO PEOPLE WHO ARE UPDATING PLEASE SWITCH TO ANDROID VR IN THE ADVANCE TAB IN SETTINGS YOUR SETTINGS WON'T BE AUTO UPDATED, ANDROID VR WILL ONLY BE DEFAULT IF YOU DIDN'T HAVE ANY SAVE DATA
  • erievs & Smu1zel (helped me build the release) && 2ipper (a lot)
    • Add the current version to the update header in settings updater.
    • Switched the default agent from Android to Android VR, so videos will play again, do note VR does NOT support YouTube kids content. A better solution is being worked on, this is a stopgap update really.
    • A lot more, I'll update as I learn more, oops.

Beta - 34

  • Smu1zel
    • The screen timeout feature now only turns off the bottom screen. This means you no longer have to set it to Never to make the app usable.
    • The iOS client has been removed in favor of Android (with some iOS parameters since that works for some reason). This works with all videos that the iOS client originally supported. visionOS should no longer be preferred due to YouTube blocking Kids videos on it as of September or so. If you used it as a workaround in 33, please switch back. This may also fix video playback in certain regions, but I don't know for certain.

Beta - 33

  • Smu1zel
    • Better error screen.
    • Formatted the entire codebase with clang-format.
    • Added an option to hide the pointer (the red box when you tap the screen).
    • FourthTube now uses a better color scheme, instead of using a dull blue nearly everywhere.
    • New banner for when a video isn't playing. Criticism is welcome.
    • Old ThirdTube config files now retain the scroll speed threshold value set when used in FourthTube.
    • Dropped the unused unicodetochar library.
    • Changed some font sizes.
    • Deleted some obsolete files.
    • Changed libctru library path to his. Updated it.
    • Some other general improvements to enhance the user's experience (TM)
  • 2ipper
    • Fixed the community tab.
    • Added timestamps. Tapping them in the description or comments will jump you to that timestamp automatically.
    • Added Live tab.
    • Added Shorts tab.
    • Changed the color of the Reload button.
    • Removed useless randomVisitorData function.
    • Translated the "Hide pointer" string into Japanese.
    • Added better resolution detection logic.
    • Fixed a bug where a video would end a few seconds early.
  • Dragontwo14
    • Made some fixes to the German translation.
    • Translated the "Hide pointer" string into German.
  • cooolgamer
    • Translated the "Hide pointer" string into French.
  • Dxni
    • Translated the "Hide pointer" string into Italian.
  • Misino
    • Added a Spanish translation (will be implemented in the future).

Beta - 32

  • Smu1zel
    • Added an Italian translation (with help from Dxni)
    • Updated stb_image
    • Fixed some annoying spelling errors in the English translation
    • Lowered the minimum speed limit for videos to 0.25 (to match YouTube)
    • Improved the German translation (with help from Dragontwo14)
    • Refactored time unit handling in the New tab
  • 2ipper
    • Fixed up the changelog feature
    • Fixed occasional performance issues when streaming >240p on clients other than iOS
    • Fixed the banner spin
    • Other misc fixes

Beta - 31

  • Smu1zel
    • Rewrote community posts workaround to take advantage of Google's parameters (images load much faster and take up less memory, at the cost of a small drop in quality).
    • Added code to wait up to 20 seconds for the 3DS to connect to Wi-Fi at launch (avoids some race conditions).
    • Added visionOS app/spoof data.
    • Upgraded nghttp2 to version 1.64.0.
    • Some more QoL internal improvements to enhance the developer's experience.
  • 2ipper
    • Added code to fetch visitorData from YouTube's servers directly (fixes the infamous gray Play button again).
    • Added the ability to see the latest changelog in the Update tab.
    • Fixed subscriber count in the Subscribed tab.
    • Search fixes.
  • cooolgamer
    • Created a custom boot screen.

Beta - 30

  • Added option to switch app data (iOS, Android VR) to Settings -> Advanced.
  • Update iOS client.
  • Added visitor data (YouTube requests). (Comment From Me ErieVS: I have no idea why I didn't think about doing this to begin with, I used it with MangoTube, guess I just forgot, anwyas huge thanks to 2ipper for this fix!)

Credits

FourthTube credits:

  • WindowsServer2003 - The creator of ThirdTube.
  • Smu1zel - Figured out the line of code that needed to be changed and tested the change out, fixing the app after it stopped working in 2024.
  • NCP 3.0 - Fixing the app after it stopped working in 2024.
  • 5GBurrito - Minor changes (project manager?).
  • 2b-zipper - New banner, watch history fix, new icon, 480p support, some other fixes, and a fair bit more (thank you so much!).
  • ItsFrocat & Dragontwo14 - For the strings used in the German translation.
  • cooolgamer - For the strings used in the French translation, as well as a custom boot screen.
  • Dxni - For the strings used in the Italian translation.
  • returndislike - Used for dislikes.

ThirdTube credits:

  • Core 2 Extreme - For Video player for 3DS which this app is based on. Needless to say, the video playback functionality is essential for this app, and it would not have been possible to develop this software without him spending his time optimizing the code sometimes even with assembly and looking into HW decoding on the new 3DS.
  • dixy52-beep - For in-app textures.
  • PokéTube - For the icon and the banner.
  • The contributors of youtube-dl - As a reference about YouTube webpage parsing. It was especially helpful for the deobfuscation of ciphered signatures.
  • The contributors of pytube - As a reference about YouTube webpage parsing. Thanks to its strict dependency-free policy, I was able to port some of the code without difficulty.

External links

Advertising: