Show HN: Horizon – Private alternative to Imgur (horizon.pics)
For the past 3 years, I've been building and iterating on a product I called Horizon Pics, which is a file hosting service, similar to mainstream services, like Imgur. Horizon allows you to quickly upload and store all types of files, from images and video, to PDFs and other documents. The biggest differentiating factor is that Horizon's incentives are much more aligned with you, the end-user.
Unlike Imgur, Horizon has absolutely no ads, doesn't sell your data, has built-in security and privacy controls, and is fully focused on your file sharing needs. No social media or other bloat.
This past week, I've launched a rebrand of Horizon which features a brand-new desktop app called Alpine[3], which serves as a local companion to Horizon. With it comes the capability to auto-upload screen captures and upload your clipboards as shareable pastes. For extra privacy, clipboard sharing can be automatically deleted after one view, or end-to-end encrypted with AES-256-GCM client-side. The desktop app is completely free to use! It's powered by Tauri using TypeScript, SvelteKit, Sass, and Rust.
Horizon offers a free plan with limited storage and upload sizes, while the paid plan offers higher limits.
Let me know what you think about the landing page[0]. Does it provide enough information as a new user?
[0]: https://horizon.pics
218 comments
[ 4.1 ms ] story [ 251 ms ] threadI love that there is a Linux Appimage but does it also work with just a browser?
[0]: https://horizon.pics/help/articles/start-uploading-files
Some feedback after using it for a few minutes:
- When clicking the "+ create" menu, left-clicking whitespace on the page does not close the dropdown
- Home page takes very long to list videos (even with a single video). Updates after moving videos/deleting videos/creating folders also feel unresponsive.
- On home page or inside folders, videos do not have thumbnails (just a generic camera icon)
- While a video is being moved to a directory (spinner be spinning), the delete/move options under the search bar are still present
- Would like an option to apply resize/compression settings to videos on upload to help manage storage space
- When failing to upload due to size limit, the UI does not say what the size limit is
I think this is a promising service so I'll upgrade and hope the quirks improve over time!
Edit:
- Trying to upload 30-ish 100-200MB videos at the same time in the web UI, many error with `Unable to mark session as finished`.
1. Good catch. Will improve on this.
2. I'm not sure what could be causing this. My account with thousands of uploads loads in less than one second.
3. Thumbnails are not supported due to compute and processing considerations, but will investigate this.
4. Good catch.
5. Compression can be compute intensive, but will investigate this further.
6. Will add that in.
7. Hopefully this isn't too ubiquitous? I'll investigate what's happening - but from preliminary analysis, it looks like a chunk may have failed along the way.
A couple more suggestions:
- Would like a select-all button instead of clicking videos 1 by 1
- An option to switch from grid view to list view could be useful
- Home UI shows 25 items per page but the grid has 3 columns so the last row is never full - which makes it seem like there are no further pages.
- When moving items, the item count in the title of the destination-selection dialog keeps increasing for every move operation. I think items are not deselected after moving?
As for those files that failed but still show up in the dashboard, it means they're stored incomplete, and as such, will be automatically purged in 24 hours. I will work on hiding them in the dashboard.
- List view for files - Select all - Video thumbnails (MP4, subject to eligibility depending on encoding)
Question, have you done the business analysis to know how long you can afford to run the system when giving away 500MB? Even your paid model seems really inexpensive. Do you have enough margin to immediately not go broke?
I am not trying to throw shade, I am just curious because it almost seems too good to be true since you aren’t running any ads and your price is free and/or cheap
That said, if he’s just bootstrapping this as a hobby with low overhead these prices are just fine. He probably actually makes a good profit once his user counts climb a bit. This type of service can be easy to keep afloat in these prices is my gut feeling and that’s probably good enough.
Besides there are some easy solutions to an emergency situation. Raise prices. Stop offering free plans. Change the resource limits. Etc. so much he can do before going broke.
I tend to toss my photos in backblaze or S3 for this reason -- UX is severely lacking but I pay for what I use. I'm curious how you landed on the subscriptions you chose + whether you'd consider usage based plans?
Most people do not have 100 GB of media on hand, nor will they probably in the next 5 years. As a result, it's basically unlimited from a reasonable usage standpoint. Before adding a 100 GB cap, I actually experimented with having "unlimited storage", but this can go wrong in many ways. I've spoken to companies in the VPN and cloud storage industries and having unlimited anything can go very wrong, especially if your service is promoted in a problematic context. e.g. unlimited cloud storage in a data hoarding community. By at least adding a cap, I can calculate a maximum cost for every user to influence my financial decisions and restrict abuse.
As for pay-per-use, no plans for now. Kagi's CEO had a really nice discussion about this on their forum and on HN. Simply put, for the demographic I'm targeting, which is quite broad, the typical user would likely get turned off by a pay-per-use model.
I've also priced Everest lower than other paid services, such as Vimeo and Gyazo, while including extra benefits.
I have over 130 GB of media and really just started taking pictures two years ago. My mother for sure has way over 100 GB of media. My gf too. My father also has over 100 GB of media. And we all are not photographers or people who must take pictures of everything. 100 GB is not that much really, especially since everybody cat take 4K pictures and record 4K videos. Who do you mean by "most people"?
I think you're framing Horizon as potential photo backup, in which case, it is not designed nor meant for that.
90% of my coworkers with “decades of experience” and “senior” in their titles would not even be able to build something like this in their full time. Let alone part or spare time.
That'd be cool if the self-hosting use-case was supported in addition to your main public site.
Throw a writable path or s3-compatible bucket in a config, set an admin password, and away..
Other folks could finally stop rewriting the basic aspects of image upload hosting. Wouldn't that be a nice gift?
If an image does go viral, which has happened before on popular Reddit posts that hit the front page, the infrastructure should be able to handle it for a while, and it should not be costly.
Now we only need to explain that to AWS folks
https://www.reddit.com/r/reddit.com/comments/7zlyd/comment/c...
why does everybody here think that imgur is a failure in light of OP's stated goals? His stated goals are the same as imgur's stated goals. The imgur outcome is the stated goal of most of the people here.
Think a little bit more inside the box.
Don’t forget to talk about the “wonderful journey” it has been when announcing the sale.
Imgur is still good. It's just not great anymore, and it's a long way from shitty.
I’d argue that having a service that exists in any form is a success. The fact it’s used so heavily despite your opinions and being loaded with ads means people value it and are better off than if it never existed. If the creator here could create the same but with no monetary upside directly, even just having the notoriety and putting it on his resume would translate to dollars indirectly. It’s a side project, chill.
Because what everyone on the internet wants is a place that will just friggin hold images and respond to HTTP requests with that image
"in light of OP's stated goals"
because op seems to want to build a sustainable business, but at a certain scale it just becomes unsustainable because you become a CDN that is paid for per-seat. So they will inevitably need to either not scale (which makes them not what the internet wants), or scale by either becoming Cloudflare or becoming a social networking site, so that they can either pay their bills via usage-based-billing or pay their bills via sweaty VC money.
https://drewdevault.com/2014/10/10/The-profitability-of-onli...
I've swapped to using the app Dropshare hooked up to a Cloudflare R2 bucket myself
That combined with pointing a subdomain at the r2 bucket means I can share images virtually instantly without thinking too hard about it (the r2 URL is copied to clipboard once the image is uploaded). Having a personalised vanity domain is a cherry on top too http://img.cohan.dev/AXsaG.jpg
Also means it's on me to make sure images are available in the future and I trust me to keep my images online forever more than sites that have to find a way to fund themselves eventually.
I made one of these back in 2005 and it was inevitably gangloaded with questionable content like p*rn, malware, software license keys, copyrighted material, etc.
It soon became apparent that this is not ideal.
Same thing with tools that would try to archive Imgur, the results basically need manual review because the resulting dataset is a loaded gun.
Someone had posted ~500 pictures of "naked kids", a Canadian bot had found them and notified my host provider, who automatically took action.
Everything happened in less than 30 minutes, between the first picture being uploaded and the server being shutdown.
First I tried to restart the server and clean it, but I received new notifications as soon as it was online. So I just restored the last backup before it all started. And I removed the ability for public users to upload pictures.
I will never ever publish a service allowing user to upload publicly any content.
(I'm hoping I missed something :)
I always wonder, if your marketing pitch involves security features, but those features are off by default, aren't you technically pitching your lack of security?
In the meantime, OP and Co. could create an open standard for image hosting, and have a lasting impact on the order of S3. Wouldn't that be something?
Here's to hoping.
There are also other security features, like end-to-end encryption for pastes, but like mentioned before, not everyone wants to lose the ability to preview their content in the dashboard.
By giving the user a choice, I can cater to both crowds: one that prefers convenience, vs the other which prefers the most security.
Edit: To clarify, all files are already encrypted at rest with a key I control. But with Encryption enabled (capital E to distinguish the feature name), it is encrypted again with a key Horizon won't store.
Paste end to end encryption uses the native window crypto subtle API, widely used and reputable.
Is there content moderation at the backend of Horizon?
If any content is uploaded that violates the terms of service and is reported, they will be deleted as soon as possible, and that user will almost certainly be permanently banned.
The terms of service also limits my liability.
Based on this comment thread, I fully expect your site will soon host CP/CSAM, if it doesn't already. Other image hosting services devote extensive resources to engineering a solution to this problem (one that is more robust than user reporting). I would not expect you will be able to avoid this work, and avoid liability.
Edit: I just noticed you're quite young. Congrats on all the great work. I think this CSAM thing could bring misery your way so I hope you find this comment helpful. Good luck out there.
This is an issue that could ruin you. The only reason it hasn't already is that the service isn't big enough yet. You undoubtedly already have CSAM on your network and any reasonable person with experience online would expect that, which is an important standard for you to consider. You're starting your own projects online at 17. You will do a lot of cool stuff in your life. Don't let this kill that inertia.
My 2c.
Your terms of service shields you from nothing. It doesn't limit your liability here at all.
Some stuff is hard to unsee.
Edit: I wonder if a local LLM (to help with privacy concerns) would be a good option or not to at least identify anything obviously bad. Wish I had more concrete suggestions.
Edit: A local model could work, but that can be quite compute intensive and therefore expensive.
So I would try asking around or thinking of how best to handle the specific reported cases without exposing yourself too directly.
[0]: I am not a lawyer
From their terms: (emphasis mine)
> Unless you are an Enterprise customer, Cloudflare offers specific Paid Services (e.g., the Developer Platform, Images, and Stream) that you must use in order to serve video and other large files via the CDN. Cloudflare reserves the right to disable or limit your access to or use of the CDN, or to limit your End Users’ access to certain of your resources through the CDN, if you use or are suspected of using the CDN without such Paid Services to serve video or a disproportionate percentage of pictures, audio files, or other large files. We will use reasonable efforts to provide you with notice of such action.
https://www.cloudflare.com/service-specific-terms-applicatio...
For supported video types, Horizon is optimized in the sense that it recognizes videos and allows viewers to stream it in chunks for seamless watching.
- What if the user's hardware is not performant?
- Transcoding is intensive, so their machine will become slow
- Even wasm based ffmpeg will not be as efficient and has its own issues
- Takes a very long time
2. Not if you do as proposed
3. Efficiency is not your problem, as you've stated with the previous 2 requirements. Your algorithm doesn't have to be maximally efficient if it takes a while to compute (eg you're using sleep in it)
4. Doesn't matter, most users of this service will only be taking a few photos or videos a day. Offer a paid service upgrade for heavy users who cant handle the upload times.
In the (possibly near) future, I do plan on scaling to the NA to give us better latency.
You certainly have the skills but can one be an amateur professional?
Can I ask when you started programming/building things? Was it a natural interest or did you receive encouragement from someone in your life?
Wishing Horizon all the best, excited to use it!
I started programming at around 9 years old in MS Batch. By making TUI apps, I learned the fundamentals, like variables, logic, functions, etc.
The interest actually stemmed from gaming. I was playing Minecraft and I was like, "hey, why can't I make cool stuff like this?" Spoiler alert: I did not remake Minecraft lol. My father was an early adopter of tech, like when he purchased the first Macintosh, so he also encouraged me into the field.
You have to take the necessary precautions, both legal and technological, to prevent awful content from becoming problematic.
Also according to your own terms of service you cannot access the website yourself, that is odd.
However, for other usage of the site, the privacy policy says that the minimum age is 13 years old.