Turn Reddit into a full-screen media slideshow.
The browser extension is now the main way to use redditp. Presentation Mode for Reddit runs directly on Reddit's pages in Chrome and Firefox, using the posts already rendered in your browser and your normal Reddit session instead of Reddit's public JSON API.
Install Presentation Mode for Reddit — opens the Firefox Add-ons listing in Firefox or the Chrome Web Store otherwise.
- Install the extension and open a Reddit feed, search result, or post.
- Click its toolbar button or press Alt+P to start presentation mode.
- Use the arrow keys, Page Up/Page Down, Space, or horizontal swipes to move through slides. Press Escape to close.
You can also launch it automatically by adding redditp=1 to a Reddit URL, for
example r/pics in presentation mode.
In Firefox, allow reddit.com access in the add-on's permissions to enable this
URL shortcut.
Images, galleries, and videos appear as slides. Use G to skip the rest of a gallery, Auto for automatic advancement, M for video sound, F for fullscreen, and the gear button for timing and display settings.
See the browser extension README for all controls, supported page formats, and browser differences.
The shared source lives in browser-extension/. In
Chrome, load that folder as an unpacked extension. For Firefox, run
npm run ext:package:firefox and load build/firefox-extension/manifest.json
as a temporary add-on. See the
development installation instructions.
npm install— install development tools.npm run ext:package:all— build both store packages.npm run test:all— run unit and Playwright tests, including extension tests in Chromium and Firefox. Install the test browsers first withnpx playwright install chromium firefox.
npm run ext:release [patch|minor|major|x.y.z] (bump defaults to patch) bumps
browser-extension/manifest.json, builds both store zips, uploads to the Chrome
Web Store and to Firefox Add-ons, then commits and tags the version. Both stores
queue the submission for review; nothing goes live instantly.
Copy .env.example to .env (gitignored) and fill in the two sets of
credentials before the first release. Rehearse with npm run ext:release:dry —
it packages for real, then prints a review of both payloads (file list, sizes,
permissions), the listing each one targets, and the branch and tag you would be
shipping from. No upload and no git write happen, and the manifest bump is
rolled back.
A store refusing a step is a normal part of this flow, so the release is
resumable. Every step is attempted, what landed is recorded in
build/release-state.json, and the run exits non-zero listing what is left —
the release commit and tag are held back until nothing is. Re-running the same
command resumes that same version and skips the finished steps, so a publish
rejected for missing Privacy practices fields is fixed in the dashboard and then
retried without re-uploading or burning a version number.
Flags: --skip-chrome, --skip-firefox, --no-git, and --restart to abandon
an unfinished version and bump a new one instead.
The original redditp.com website remains in this repository, with archived data as a fallback when live Reddit requests fail. The controls and hosting instructions below apply to that website, not the browser extension.
- a - toggles auto-next (play/pause)
- t - collapse/uncollapse title
- c - collapse/uncollapse controls
- i - open image in a new tab
- r - open comments in a new tab
- u - open user slideshow in new tab
- f - toggle full screen mode
- m - toggle sound
- g - skip gallery
- Arrow keys, pgup/pgdown, spacebar change slides
- Swipe gestures on phones
- All /r/ subreddits, including different ?sort stuff.
- /user/ , /domain/ , /me/ url's work.
- Url's ending with ['.jpg', '.jpeg', '.gif', '.bmp', '.png']
- You can save the html file locally and use it, just make sure you add a separator e.g. the question mark in file:///c/myredditp.html?/r/gifs so the browser knows to pick up the right file and go to the right subreddit.
- Support for /r/random and /r/randnsfw virtual subreddits. These'll be tricky unless I cheat as they contain redirects.
Possible future features, depending on feedback:
- Zoom/Pan for comics
- Imgur albums support
- Offline access support, though I don't know if this is even possible actually (caching external image resources).
- Login and upvoting support
Redditp relies on the /r/subreddit in the URL to fetch the JSON from the
corresponding reddit endpoint. There are a few ways you can set up support for
these URLs yourself:
- You can use an Apache server with the
.htaccessfile. - Netlify removed redditp without warning. So now we're moving the hosting to Vercel, Cloudflare, or GitHub pages. Not sure. See vc.redditp.com for Vercel
- Use NodeJS (see
package.json). - Use a simple HTTP server and put the subreddit URL in the get parameters like
http://localhost?/r/subreddit. - Use GitHub pages by copying
index.htmlinto404.htmlwhich will make all unknown URLs reach the sameindex.html. This currently only works with a custom domain because of where the.jsand.cssfiles are located.
- Start the local server with
npm start. - Load a routed URL with a mock fixture, for example
http://127.0.0.1:8080/r/pics?mock=playwright-smoke. - Mock fixtures live under
test-data/and are only used when themockquery parameter is present. - Run the Playwright smoke test with
npm run test:playwright.
redditp launched on July 4, 2012 and accumulated 374 commits over more than fourteen years. Read the history of redditp for the launch story, a commit-category breakdown and timeline, and the project's transition to archived data and a browser extension as Reddit restricts API access.
- Ubershmekel http://yuvalg.com/
- js-cookie for managing cookies
- Favicon by Double-J designs http://www.iconfinder.com/icondetails/68600/64/_icon
- Slideshow based on http://demo.marcofolio.net/fullscreen_image_slider/
- Author of slideshow base: Marco Kuiper (http://www.marcofolio.net/)
- And many more that have contributed to this project through feedback and pull requests https://github.com/ubershmekel/redditp/graphs/contributors