Otto - a Reddit alternative I've been building since 2023
Posted by p4r4d0x@reddit | RedditAlternatives | View on Reddit | 44 comments
I've been working on a Reddit-alternative called Otto for a few years now. The increasingly user hostile direction Reddit has taken over the past few years, especially since the IPO, has been disappointing and has significantly diverged from how it was in the 2010s. The API shutdown leading to the moderator exodus, killing third-party apps, rampant astroturfing, bot accounts in every thread, private profiles that seem to intentionally obscure whether someone is a bot, declining quality of comments and posts.
There was also the design side of things. Old Reddit has been on borrowed time for years now and may eventually disappear. So when I started building an alternative, that was one of the goals: something that takes inspiration from Old Reddit and preserves the spirit in case it goes away, but with an attempt at a more current design and implementation from the 2020s and made using modern frameworks and tools.
It's at **[otto.talk](https://otto.talk)** if you want to take a look.
**What makes it different**
There's a couple of guiding principles behind it:
- **Moderator accountability.** Mod actions are logged and visible. There's automated detection for mod abuse patterns, and admins can restrict mod permissions or issue warnings. Communities cannot be held hostage by anyone. Every mod action can be appealed. I've been on the wrong end of unjust actions myself and want to ensure that doesn't happen here.
- **No ads and no algorithmic feed.** There's no engagement-optimizing algorithm deciding what you see and no promoted content. There's two unique sorts implemented, one for posts and one for comments. The default post sort "Depth" promotes long-form content, and demotes easily digestible images and memes that tend to dominate vote-based feeds. Comments have a "Quality" sort that promotes more thought-out comments over jokes and one-liners (I can go into exactly how these work at a later date).
- **Automated bot and spam detection.** The platform runs multiple layers of automated detection for spam, manipulation, and inauthentic behavior.
- **No private profiles and visible country flags.** Every user's post and comment history is visible, and country flags are shown alongside posts and comments based on where you're posting from. This makes it much harder for bots and astroturfers to operate without being noticed, and lets you judge credibility for yourself.
- **Hosted in Australia.** The servers and data are located in Melbourne, Australia. With increasing uncertainty around US-based platforms and government pressure on tech companies, having servers located outside the US seems to be advantageous. As much as possible is edge cached near you via bunny.net CDN, so it should still be fast and responsive, regardless of where you are located in the world.
- **GDPR and CCPA compliant.** Accounts can be fully deleted and personal data can be exported. European and Californian privacy regulations are adhered to as a baseline. Minimum amount of information is captured to run the site.
- **SFW-only at launch.** Age verification laws are a mess around the world and rather than requiring everyone to scan their face, the simpler path is just to disallow NSFW content for now. The majority of interesting content on Reddit is not NSFW. Once the laws stabilize and there's less invasive ways of proving age (or maybe the laws get scrapped entirely), this can be revisited.
- **VPNs are blocked.** I know some people use VPNs for privacy, but they're also widely used to sockpuppet other countries, particularly people pretending to be American to have some nefarious influence on American political discourse. This became apparent when Twitter added the country of origin feature recently and tons of political accounts were revealed as not actually based in the US, despite claiming to be in their bio. Part of the design is to block VPNs and datacentre IPs, so the actual country flag can be displayed next to the user. If this turns out to be a bad decision, I'll revisit, but I want to try it out at least initially.
**Other features**
There's a full feature list on the [About page](https://otto.talk/about) if you want the details, but the short version: it's fairly full-featured at this point. Communities with customizable settings, flairs, rules, and per-community domain blocklists. Text, link, and multi-image posts with thumbnails and auto-generated TLDR summaries. Threaded comments with multiple sort options. Full-text search. Embedded media for YouTube, Twitter/X, and Bluesky. DMs and modmail with typing indicators and conversation archiving. Google login. User tags (like a built-in RES). Session management. Ban appeals with automatic content restoration. Reporter quality scoring (bad-faith reporters get deprioritized). Dark mode. Keyboard shortcuts. Fully responsive mobile experience. Live notifications via websockets.
**Tech stack (if anyone's curious)**
- Backend: Swift/Vapor with PostgreSQL and Redis
- Frontend: React Router 7 with SSR, TanStack Query, heavily modified Bootstrap + Tailwind
- Search: Meilisearch (self-hosted)
- CDN/DDoS: Bunny.net
- Bot protection: Cloudflare Turnstile (invisible)
- Analytics: Umami (self-hosted, privacy-focused, no Google or Facebook listening in)
- Observability: Grafana, Prometheus
- Server: Docker, Ubuntu, Nginx, Resend
**Where it's at**
It's been live for about a month, while I've been making alterations and additions on a daily basis. Obviously this is not going to replace Reddit, but it's worth taking a shot at tackling some of the problems that Reddit seems less interested in solving and see whether I can make a dent. I'm several years into this now and pretty invested in seeing it get some traction. I've personally been working as a software dev since 2009 including a stint in bigtech, so making software is something I'm pretty familiar with.
One disclosure that needs to be made is that there is artificial activity on the site right now. This is the classic 'cold start' or 'chicken and egg' problem, where a social platform without activity cannot attract users, but you need users to produce activity. The way the Reddit founders solved that was sockpuppeting accounts and posting stuff themselves via numerous user accounts. I've just automated that. They will get turned off the moment a self-sustaining amount of user activity is happening. Yes, it's all very ironic that I'm trying to start a site based around authenticity and there's artificial activity, but an empty site is a dead site, so I've had to compromise on this one issue, and hopefully only very temporarily.
There's a feedback button on every page in the bottom-right hand corner of the screen. This dialog that appears takes bug reports or feature suggestions. Both are welcome, please feel free to report any issues or give any feedback that might come to mind.
If any of this sounds interesting, I'd appreciate you checking it out at **[otto.talk](https://otto.talk)**. And if you're inclined, create a community for something you care about.




anadem@reddit
Joined .. looks nice! I agree with most all of your write-up here, but ofc as you noted the issue will be getting enough real users to make it viable. Do you have a plan for making otto popular? (Tbh I don't like the name 'otto')
I clicked 'join' for a couple of communities, with no visible change .. each community that I joined still says "Join" (instead of "leave") but that's perhaps on the to-do list.
Another for your to-dos: after viewing the complete list (page) of communities, I clicked "Otto" at the top banner, and got "Something went wrong / An unexpected error occurred. Please try again later." .. the Go Home button worked fine.
Good luck!
p4r4d0x@reddit (OP)
Thanks for the reply. I've got error reporting setup but I'm obviously missing these errors. The error you got appears to have been from the frontend which was not sending errors correctly. I've just deployed a fix for that issue. Whenever you get a chance please check whether the error is still occurring. Thanks again.
anadem@reddit
Confirming that both those issues are fixed after a refresh this morning. Thanks, and here's to your success.
Do you aim to have otto be free with ads or fee based, eventually?
prankster999@reddit
I tried to "join" a few communities too... No such luck.
prankster999@reddit
Congratulations on your Reddit Alternative... The site looks incredibly professional... What was the catalyst for you to create the site, and was it due to your own personal dissatisfaction with how the site was operating? Did you use an existing Reddit Alternative tech stack software codebase as the starting point, or did you do everything from scratch? Did you build it all by yourself, or did you get others involved (as part of a team / company effort)? Is the site entirely self funded / bootstrapped, and what are your plans for the site to generate financial funds in future (including getting VCs involved)?
p4r4d0x@reddit (OP)
Thanks, that's kind of you to say!
The catalyst was the shutdown of the API in 2023 which led to the end of Christian Selig's brilliant Apollo app and mistreatment of mods when they tried to protest. The site got significantly worse after that. But there's so many other issues that seem ignored and allowed to fester to this day, especially bots and astroturfing. It has degraded significantly since the IPO, but it was already in a downward slide.
This is self-built from scratch using a stack I'm familiar with. I worked as an iOS dev since 2011, so built the backend in Swift with the Vapor framework. The frontend is React Router 7 which I had to learn, but have also worked as a web dev in the past, so not too steep learning curve.
Self-funded at the moment, but the costs are relatively low. No plans for VCs or taking funding, I want to remain as independent as possible. If it grows to the point where hosting costs become significant, I'd explore optional premium memberships first. If ads ever became necessary, they'd be clearly labelled, non-targeted, and not fed by an engagement algorithm. Something closer to how old Reddit handled them (a sidebar ad that doesn't try to manipulate your feed). If it actually reaches the point where additional funds are needed, it means people found it useful, so there's a silver lining to it becoming more expensive to operate.
prankster999@reddit
Seeing your profile, I see that you became a member in 2008. With this in mind, I take it that you must have been a big fan of Old Reddit, and have also been dismayed by Reddit's current trajectory?
I became a member in 2015, so have a slightly skewed idea of what Reddit is supposed to represent (to me in any case).
I personally really like Reddit, apart from some of its more politically charged subs and discussions, and also don't really like the downvote button (as people aren't prepared to engage, but would rather just bad faith downvote you).
Looking at your About page (https://otto.talk/about), I see that you've really gone to town with some of the features... In other words, the fact that you've custom coded everything from scratch means that you've put a lot of work into Otto... Which then makes me ask: what inspired the website name?
p4r4d0x@reddit (OP)
Thanks for the reply. I started using Old Reddit around the time of my first programming job and loved reading IAMAs from all sorts of interesting people and enjoying all the interesting comments from knowledgable people sharing obscure knowledge. The comments were more interesting than the article a lot of the time. There were still veins of low-quality content back then like rage comics and advice animals, but still vastly more good than bad and easy to filter.
But the site has undergone wave after wave of 'eternal september' since then. Comments in some parts of the site have degraded in quality significantly compared to what they used to be. And I can use the Internet Archive Wayback machine to see I'm not seeing things through rose-coloured glasses, it really is worse.
Bad faith downvoting is definitely a problem that has gotten worse over time, I'm not sure how to solve that though other than trying to cultivate a more conscientious community, but even then when it grows past a certain point it's probably futile.
Yes, I've gone in pretty hard with features because I want this to be a legitimate competitor that people can use and not feeling they're missing important functionality and feel like "if only it had this crucial feature, it might have succeeded".
I replied above about the name, but basically it just stuck in my mind as short and memorable (hopefully!)
prankster999@reddit
Do you have any plans for wanting to expand beyond the social media confines of Reddit and maybe go broader in terms of your social media parameters?
What are your future plans for the website?
p4r4d0x@reddit (OP)
I'm pretty focused on just addressing all the pain points of the Reddit-like experience at the moment and getting over the major hump which is just getting traction, users, activity, people actually caring about the site. It's a huge job on its own. There's bound to be tons of subtle bugs uncovered which need to be fixed quickly.
I have a lot of nice-to-have features planned for the future. One that interests me is 'community notes' to combat misinformation, but it needs a pretty large userbase to make functional, so not possible yet.
prankster999@reddit
You mentioned in another comment that you're prepared to accept "failure"... In light of that comment, what does success and failure look like to you? Will you carry on or will you pull the plug (ala Digg) if your site is a "failure"?
nusm@reddit
I keep trying to submit an image in the funny group, but I keep getting a message that says "Value was not of type 'MultipartPart' at path 'images'. Expected array but encountered single value."
p4r4d0x@reddit (OP)
Whoops! This must have broken when I added support for uploading multiple images. I've deployed a fix and added tests to make sure this doesn't happen again. Please retry when you get a chance. I've uploaded a test image to funny to verify. https://otto.talk/o/funny/comments/GctfNGE/iq_too_high/
nusm@reddit
It seems to work now. Thanks for this, and I’m going to try to keep checking in. I hope it will grow!
p4r4d0x@reddit (OP)
I upvoted your posts, thanks for contributing!
nusm@reddit
Thank you!
TheAnonymousTickler@reddit
You gonna get downvoted to oblivion , if it’s not open source nor integrates with the failed concept of decentralized social media, people will hate you
Skavau@reddit
Every other centralised Reddit alternative has been a complete failure.
p4r4d0x@reddit (OP)
Every social platform was a failure until it wasn't. Reading threads like this one, the frustration seems to be boiling over and the time is right for another attempt.
Skavau@reddit
Dude, there's literally 1 new attempt at a centralised alternative everyday posted here. Moreover, all this time, all along - the Forumverse is 1000x times more active than any other centralised Reddit alternative has ever been.
p4r4d0x@reddit (OP)
Thanks for the reply, thankfully not getting downvoted too hard!
I'm not against open source or decentralized social media, federation is a cool idea. Closed source is simply to make sure the bad actor protections don't get instantly circumvented. And federation is not added here because I have to make decisions about what to implement as a solo programmer and haven't had time. It can be added in the future if there's a desire for it.
prankster999@reddit
Don't know why you got downvoted, but I upvoted you regardless.
sir_anarchist@reddit
Sounds cool. I just signed up to have a look around. I’m interested in how using Vapor went. I write most of my hobby projects in Swift but haven’t done anything of substance in Vapor. How did you find it?
p4r4d0x@reddit (OP)
Vapor has been great, being able to live debug and inspect state at a breakpoint in XCode feels quite miraculous if you're used to less sophisticated web dev techniques. Fluent is a great ORM, not quite Rails ActiveRecord level, but definitely up there. Leaf leaves a lot to be desired as a templating language if you want to do anything complex unfortunately, like you can't do recursive templates which can be very limiting. So I ended up abandoning it for React Router as the frontend and using Vapor solely as the API backend. They ended up pairing very well together.
But it's quite impressive the array of server-oriented libraries that exist for Swift now - Redis, Prometheus, JWT, Postgres, Websockets. I haven't encountered anything complex I couldn't find a well-supported library for.
Apple also started using it for some of their web services, migrating from their ancient WebObjects framework and has a team dedicated to maintaining the underlying library SwiftNIO, so my philosophy is that if it's good enough or their gargantuan workloads, it's probably good enough for me.
busymom0@reddit
I used Vapor on a website I made recently too (I am primarily a mobile app developer). I used it with SQLite as database:
https://limereader.com
It aggregates the top articles on STEAMD topics (Science, Technology, Engineering, Arts, Math, and Design) from various forums and displays them in chronological order. This includes forums like Hacker News, Tildes, Lobsters, Slashdot, Bear, and some science, tech & programming related subreddits.
You can read more about it on the about page:
https://limereader.com/about
p4r4d0x@reddit (OP)
This is a killer idea, I haven't seen this anywhere else so it might be completely novel. I love the stripped back design too and the super-fast load times. Great domain also. SQLite is really versatile, I'm not sure there's anything I'm doing with PostgreSQL that couldn't be done with SQLite. It's also complex to support both databases in the codebase because the syntax differs subtly and causes bugs you don't discover until it hits production and blows up.
Just a note, I went to pranapps.com and got an SSL error, so there might be an issue there.
busymom0@reddit
You may find my comment useful too:
https://old.reddit.com/r/RedditAlternatives/comments/1sc7ui8/otto_a_reddit_alternative_ive_been_building_since/oedns42/
busymom0@reddit
Would like to hear more about this.
p4r4d0x@reddit (OP)
Thanks for the reply. I thought one of the biggest issues with the Reddit design is that it allows easily digestible content and one-liners to dominate. Which is great if you're looking for that kind of content, but not so great if you're looking for reddit feel from 2010s.
It gives a boost to effort comments and a demotion to lower effort comments. Signals like length (very short comments like 'lol', 'this' take a penalty), paragraph structure, full sentences, emoji usage (all emoji post takes a penalty). It's a very slight effect but multiplied over all comments, promotes effortposting. You can also turn it off, if you don't want it. It's completely optional.
busymom0@reddit
That's a good idea. Would love to learn more!
immersive-matthew@reddit
The mod accountability is no brainer and I wish Reddit would pull their head out of the asses and implement. That said, Lemmy did implement (or at least half implement with the modlog) and is a decentralized alternative. Decentralization is the future as it solves the inevitable issue with centralized solutions, especially any that get traction and large user base as no matter the intentions, centralized anything of value will become corrupt overtime.
p4r4d0x@reddit (OP)
I've also got the public mod log feature implemented on the sub page, in the sidebar as as tab. I've also got some other mod transparency features in the pipeline still to come. I see Reddit getting increasingly user-hostile rather than less, which was one of the motivations for finally finishing this project and releasing.
I still see users preferring centralized over decentralized, perhaps because the notion of instances is confusing. I completely agree that centralized has a lot of problems. The answer might be a hybrid model like Threads, primarily centralized but has the ability to interface with other decentralized sites via ActivityPub. I'm happy to add this functionality in the future if totally centralized is a dealbreaker.
keener91@reddit
I think your alternative is on the right track since you identified the core problems with Reddit right now.
Few thoughts: mod transparency. Accountability is good. But leaving to admin of the communities to control them just means you move the problem up one rung. Mod's actions need to be displayed in a monthly report and visible for all users of the sub to see and users can report their abuse (in addition to automated detection) - make a ranking system based on this. So a lower rank mod (less credible) cannot be impose moderation on a user with higher rank (more credible)
Going along the above, automated bot and spam detection are good to determine credibility of a user, but human users must have ability to contribute to this effort. Report for botting, astroturfers, spam, AI-slop, etc will be put in an algorithm to determine the authenticity and credibility score of this user which be used for other actions.
Take it one step further, each post should have various flags of which users of the community can rank - if it's a political then users can use a slider to vote alignment left-right, if it's a picture then users can vote AI fake-real, etc. It's up to admin to set custom ranking system better tailor to their community.
Finally these flags on the post will also users customize filters to help with algo feeds. If you are left aligning and want only left-centrist political posts on your feed then you can filter that. If you only want to see generated AI pictures then filter on AI-fake. More filters better user can customize their own experience.
Keep up the good work.
p4r4d0x@reddit (OP)
Thanks for your very thoughtful reply.
On mod accountability, mod actions are visible in the mod log on every sub page. There's a tab in the sidebar where you can view every action that mods have taken. I want to make mod actions maximally transparent, so things can't just taken down silently. Mods also have to give a reason for any takedown. And any mod action can be appealed as abuse and is reviewed by an actual human, so a problem mod being allowed to terrorize a sub for months or years is not possible. There's also tracking of how many reports mods are getting, and anyone obviously not behaving well would be removed from the role or limited in their permissions.
Reporting for botting, inauthentic behavior is implemented and working. Please feel free to test it out if you see anything along those lines being posted. There is actually an internal trust score for accounts, but I'm not clear on whether exposing this is a good idea.
Thanks again for your detailed reply, appreciate it.
busymom0@reddit
Wow, an actual site which looks good design wise (I like high density UI).
p4r4d0x@reddit (OP)
Thank you for the kind feedback! It's inspired by Old Reddit, just brought into the 2020s. I avoided the modern feed card design of most social media and tried to stick to old, denser web which is what I personally prefer and I suspect there's a lot of others that do too.
posting_drunk_naked@reddit
How will you be handling or detecting bots?
I've always wondered why no one has used Apple or Google bio auth that you're probably already using to unlock your phone in order to "verify" humanity and prevent or at least slow down botting activity.
p4r4d0x@reddit (OP)
There's a few layers - Cloudflare Turnstile as a baseline, rate limiting, server-side analysis, account age gates on certain actions. Some inspiration also taken from https://github.com/fsvreddit/bot-bouncer-evaluation. Beyond that I'd rather not get too specific because you could inadvertently end up handing malicious actors a roadmap to defeating countermeasures.
On biometrics - I've tried to keep away from that because people rightly are pretty leery about scanning faces just for random websites and Discord recently lost a bunch of user information after promising to delete selfies, so the pool of trust is somewhat poisoned for now. But something to look at in the future, as long as privacy can be maintained!
hottestreddituser@reddit
does it not work on mobile browser yet?
p4r4d0x@reddit (OP)
Definitely works on mobile, there's a dedicated mobile theme and it should all be optimized with largish touch targets to make it pleasant to use. Are you having issues with getting it to work on your mobile browser? If you can provide any further info, I'll get whatever issue fixed quickly.
CreativeDesigner__@reddit
I'm unable to create an account.
p4r4d0x@reddit (OP)
Sorry to hear that, what do you see when you're unable to create an account? Is there any error message displayed? Any additional info you can provide and I'll get this fixed quickly.
tbombs23@reddit
Yooo this looks sick ty for your hard work. What are your thoughts on competitors like the fediverse /lemmy /mastodon?? And what's with the name Otto?
p4r4d0x@reddit (OP)
Thanks, appreciate your post!
I'm enthusiastic about anyone trying to compete in this space and wish them well! There's some pretty cool instances of Mastodon like Mathstodon which features Terrance Tao's posts. Users still seem to be preferring centralized or the main instance of fediverse sites, so I picked centralized for this site. Happy to look into federation if there's a desire for it.
The name Otto just stuck in my mind as short and memorable, plus it's a palindrome. I probably should have picked something else due to domain name availability, but too late now.