A self-hosted local image compressor that runs in your browser. - civilblur/mazanoke
MAZANOKE v1.1.5: Self-hosted local image optimizer in your browser — now supports TIFF, ICO, basic auth (featured on Tailscale, LINUX Unplugged, Selfh.st)
Thanks a bunch from sharing your result! Based on the fact that ICO works, and I didn't see any real issues in the logs, it could be the "Post-processing..." part where something goes wrong (I didn't add any more detailed logs for that part unfortunately).
Will get back once I've setup a basic Windows development environment and made some tests!
MAZANOKE v1.1.5: Self-hosted local image optimizer in your browser — now supports TIFF, ICO, basic auth (featured on Tailscale, LINUX Unplugged, Selfh.st)
Based off the things you mentioned, especially the "little quirk", there something in the pipeline that fails. The file name extension is intended to show regardless of which output format that is selected.
Are you perhaps using a privacy-focused browser like Librewolf (opposed to vanilla Firefox)? Or do you have any extension that might be used for anti-fingerprinting? MAZANOKE need to be able to access the browser's canvas feature in order to convert images, and some browsers are blocking this feature to prevent fingerprinting.
Also, have you tested MAZANOKE on a different browser to see if it works there?
If the issue still persist, would you mind sending me a screenshot of the browser console log, in order for me to see where it fails. This will hopefully provide some hints.
Additionally, while I don't have a Windows environment readily available, I've tested MAZANOKE on Ubuntu and macOS using both firefox and chromium, but I wasn't able to reproduce it. Will test on Windows when I find the chance to.
MAZANOKE v1.1.5: Self-hosted local image optimizer in your browser — now supports TIFF, ICO, basic auth (featured on Tailscale, LINUX Unplugged, Selfh.st)
If I understand it correctly, the heic image does get read and compressed. However, it's the last part when clicking the download button that it instead displays the image as a jpeg (on a new tab)?
MAZANOKE v1.1.5: Self-hosted local image optimizer in your browser — now supports TIFF, ICO, basic auth (featured on Tailscale, LINUX Unplugged, Selfh.st)
That's still very interesting to hear, maybe I'll look into it for my next (simpler) project just to try it out.
MAZANOKE v1.1.5: Self-hosted local image optimizer in your browser — now supports TIFF, ICO, basic auth (featured on Tailscale, LINUX Unplugged, Selfh.st)
I think @[email protected] put out some great points. On top of this, you can still install MAZANOKE as a PWA, so you "essentially" get a native application experience.
MAZANOKE v1.1.5: Self-hosted local image optimizer in your browser — now supports TIFF, ICO, basic auth (featured on Tailscale, LINUX Unplugged, Selfh.st)
Thanks for your kind words, I tried putting some effort into making the interface a bit more fun and interactive, so thanks for noticing!
In regards to Rust, I've been interested in learning more about it, but I've not had time yet, so it's been in a "soon (tm)" limbo. As I'm comfortable with JavaScript/JS frameworks, sticking with JS was a quick way to get started without much friction.
MAZANOKE v1.1.5: Self-hosted local image optimizer in your browser — now supports TIFF, ICO, basic auth (featured on Tailscale, LINUX Unplugged, Selfh.st)
To preface a bit. I occasionally run my images through Sharp over CLI, and I am also a daily user of the Caesium desktop app. However, I haven't explored the details of how Caesium is implemented.
The biggest difference is that MAZANOKE targets a different user group, essentilly those who would use online tools over installing applications, which is something you see more of these days. I wanted my family and friends to have a safe drop-in replacement for those shady websites. For those who want to use a "native app", installing MAZANOKE as a PWA is also a great option.
In terms of core functionality, they are very similar and support the same output image formats. But at the end of the day, MAZANOKE is privacy-focused too, and have plans to add a simple image editor for obfuscation, cropping, and related features. You can also access MAZANOKE anywhere, whether it is self-hosted or on the official instance.
Fundamentally, MAZANOKE relies heavily on the device, and the browser's Canvas API. This means that the speed and quality could slightly differ depending on which device/browser you use. I believe Caesium's performance would be more consistent.
(I didn't know where to put this, but my favorite feature is being able to paste to compress an image right away using MAZANOKE.)
Edit: typo
MAZANOKE v1.1.5: Self-hosted local image optimizer in your browser — now supports TIFF, ICO, basic auth (featured on Tailscale, LINUX Unplugged, Selfh.st)
For this project, I think I'll keep it to just images, but if I tackle a project with videos, it would be separate from MAZANOKE.
MAZANOKE v1.1.5: Self-hosted local image optimizer in your browser — now supports TIFF, ICO, basic auth (featured on Tailscale, LINUX Unplugged, Selfh.st)
The unofficial unraid template was graciouslly provided by ctrlaltd1337ed, but I appreciate the sentiment.
About the name, It is an amalgamation of two words, I'll leave the rest to your imagination!
MAZANOKE v1.1.5: Self-hosted local image optimizer in your browser — now supports TIFF, ICO, basic auth (featured on Tailscale, LINUX Unplugged, Selfh.st)
Correct! This all works in the browser offline. As outlined in the install instructions, you can simply download the project files and just launch index.html
. The docker setup is if you want to be able to access the service on local network or share it publicly.
MAZANOKE v1.1.5: Self-hosted local image optimizer in your browser — now supports TIFF, ICO, basic auth (featured on Tailscale, LINUX Unplugged, Selfh.st)
Yes, it's all JavaScript and essentially relies on the Canvas API to compress the images, so the performance is heavily dependent of your device and browser. I haven't delved into WASM yet, but it would indeed open up doors for improvements, such a more file format support and more intelligent optimization. At the moment, working with canvas keeps things a lot more straightforward, however.
There is no funding I can provide at all (I've received 2 donations so far, which I'm very grateful for!). I just do this on my spare time, which I have a lot less of these days. I initially created MAZANOKE as a drop-in replacement for family and friends, specifically to those who tend to use questionable or ad-bloated online tools.

MAZANOKE v1.1.5: Self-hosted local image optimizer in your browser — now supports TIFF, ICO, basic auth (featured on Tailscale, LINUX Unplugged, Selfh.st)


MAZANOKE is a simple image optimizer that runs in your browser, works offline, and keeps your images private without ever leaving your device.
Created for everyday people and designed to be easily shared with family and friends, it serves as an alternative to questionable "free" online tools.
See how you can easily self-host it here:
https://github.com/civilblur/mazanoke
--
Highlights from v1.1.5 (view full release note)
The focus of this release has been to improve the core foundation and file format support, but I'm planning to expand with more features further down the road in order to improve the usefulness of MAZANOKE (while still keeping the UX simple).
- Support basic authentication for Docker setups.
TIFF
file format support.- Convert from
TIFF
→JPG
,PNG
,WebP
,ICO
- Convert from
ICO
file format support.- Convert from and t
As a Lemmy user myself, I totally get the sentiment. GitHub isn’t ideal, and I had also considered Codeberg in the past (not for this project, but way back for others). Unfortunately, the simple reason is that the community is already on there, which makes getting contributions and engagement much easier. Managing and tracking issues across two platforms would be quite (mentally) taxing, which is on top of the effort already going into developing the app.
I'm glad to hear it's being used frequently! I've heard a similar, but not exactly the same use case, so I recommend submitting a feature request on GitHub. That way, I can review it later to assess if the feature could be included when I plan ahead for new releases.
If you get around to it, I'd love to know about it and add that as a feature.
EXIF data is removed by default, at the moment, there's no way to keep those data. I personally see that more as a feature than a bug though. The primary reason why there is no option to keep EXIF data is to maintain feature parity across different image formats.
The conversion option "Default" is meant to retain the file format when possible, but you can actively select the other options like jpg or webp if that fits your use case better.
Currently, only SVG to PNG is supported. SVGOMG is a great tool I’ve used many times as a user, but since it runs as a Node.js app, it would require server-side processing, unlike the local browser-based approach of this app.
If I understand it correctly, then yes, that's the case! I've utitlized several libraries such as "Browser Image Compression", "heic-to", and more, to wrap it in a web interface.

MAZANOKE v1.1.0: Self-hosted local image optimizer in your browser — now supports HEIC, clipboard paste, and more


MAZANOKE is a simple image optimizer that runs in your browser, works offline, and keeps your images private without ever leaving your device.
Created for everyday people and designed to be easily shared with family and friends, it serves as an alternative to questionable "free" online tools.
See how you can easily self-host it here:
https://github.com/civilblur/mazanoke
Highlights from v1.1.0 (view full release note)
I'm delighted to present some much-requested features in this release, including support for HEIC file conversion!
- Added support to convert
HEIC
,AVIF
→JPG
,PNG
,WebP
. - Paste image/files from clipboard to start optimization.
- When setting a file size limit, you can switch between units MB and KB.
- Remember last-used settings, stored locally in the browser.
The support from the community has been incredibly encouraging, an
Oh wow, thank you for taking the time creating the feature requests/issues. I just finishing replying to them.
I'll give the workflow another think and see if it fits within the project as a whole.
Even though this squoosh instance seems to be selfhosted, it has Google Analytics tracking (since Google made this app). MAZANOKE does not include any tracking nor require any internet connection at all if you install it as a PWA.
Edit: Looked at the source code of the fork, and it is applying the same tracking ID (to the big G). As squoosh is apache2 licensed, from my understanding, they should be able to simply remove that off the fork?

MAZANOKE update (image optimizer via browser): Batch upload and download


Thank you for the support that I've received during the launch of MAZANOKE—a self-hosted local image optimizer that runs in your browser! It can run offline and is installable as a web app too.
This week, I've been addressing the feature that has been a bottleneck for the usability of an image optimizer, namely: batch upload and download.
Project page: https://github.com/civilblur/mazanoke
Highlights v1.0.1 (view release note)
- Upload multiple files simultaneously
- Images are processed one at a time to prevent excessive browser resource usage.
- Download all optimized images as a zip file.
- Files over 1GB are split into multiple zip files.
- Large downloads may take time, depending on hardware and browser.
- Option to clear optimized images from the "Images" section.
- Convert GIF and SVG to PNG.
- GIF-to-GIF optimization is not supported.
- SVG op

MAZANOKE: A self-hosted local image compressor that runs in your browser
cross-posted from: https://lemmy.world/post/27452084
MAZANOKE is a simple image compressor and converter that runs entirely in your browser. No external uploads, works offline as a web app, and is powered by the "Browser Image Compression" library.
Github project page: https://github.com/civilblur/mazanoke
Features
- 🚀 Compress & Convert Images Instantly In Your Browser
- Adjust image quality (0-100%).
- Set a target file size.
- Set max dimensions, to not exceed a certain width/height.
- Convert between JPG, PNG, and WebP.
- 🌍 Installable Web App
- Use as a Progressive Web App (PWA).
- Dark and light mode.
- Fully responsive for desktop, tablet, and mobile.
- 🔒 Privacy-Focused
- Works offline.
- All image processing happens locally.
- No data is uploaded to external servers. Your files stay on your device.
Use case
This app is designed to co

MAZANOKE: A self-hosted local image compressor that runs in your browser
A self-hosted local image compressor that runs in your browser. - civilblur/mazanoke
MAZANOKE is a simple image compressor and converter that runs entirely in your browser. No external uploads, works offline as a web app, and is powered by the "Browser Image Compression" library.
Github project page: https://github.com/civilblur/mazanoke
Features
- 🚀 Compress & Convert Images Instantly In Your Browser
- Adjust image quality (0-100%).
- Set a target file size.
- Set max dimensions, to not exceed a certain width/height.
- Convert between JPG, PNG, and WebP.
- 🌍 Installable Web App
- Use as a Progressive Web App (PWA).
- Dark and light mode.
- Fully responsive for desktop, tablet, and mobile.
- 🔒 Privacy-Focused
- Works offline.
- All image processing happens locally.
- No data is uploaded to external servers. Your files stay on your device.
Use case
This app is designed to compress smaller batches of images, aimed at casual users who need to compress and convert a few image

Browse and watch videos in FreshRSS like it's YouTube: "Youlag theme/extension" (v3.0.2)


cross-posted from: https://lemmy.world/post/25939893
"Youlag" is a theme and extension for the feed aggregator FreshRSS. It delivers a video-focused browsing experience for your YouTube RSS feeds, all within FreshRSS, with a sleek theme and extra features.
Supports video feeds from YouTube, Invidious, and Piped.
Why?
The general idea is to subscribe to YouTube channels via RSS, allowing you to follow your favorite creators without an account. With Youlag installed, you can browse and watch videos in a familiar, YouTube-like interface.
More features are planned, including video queuing (with some limitations).
Git repository for more details:
https://github.com/civilblur/youlag
Features:
- ⭐ Optimized for Video Viewing
- Browse your YouTube, Invidious, Piped RSS subscriptions with ease.
- Clean, familiar video platform layout.
- Fullsc

Browse and watch videos in FreshRSS like it's YouTube: "Youlag theme/extension" (v3.0.2)


"Youlag" is a theme and extension for the feed aggregator FreshRSS. It delivers a video-focused browsing experience for your YouTube RSS feeds, all within FreshRSS, with a sleek theme and extra features.
Supports video feeds from YouTube, Invidious, and Piped.
Why?
The general idea is to subscribe to YouTube channels via RSS, allowing you to follow your favorite creators without an account. With Youlag installed, you can browse and watch videos in a familiar, YouTube-like interface.
More features are planned, including video queuing (with some limitations).
Git repository for more details:
https://github.com/civilblur/youlag
Features:
- ⭐ Optimized for Video Viewing
- Browse your YouTube, Invidious, Piped RSS subscriptions with ease.
- Clean, familiar video platform layout.
- Fullscreen viewing for videos and feed items.
- Quickly exit videos with
Esc
key. - Shortcuts fo

Browse FreshRSS like YouTube: "Youlag Theme for FreshRSS"


"Youlag Theme for FreshRSS" provides a video-focused browsing experience for your RSS subscriptions. It tries to provide a similar experience to YouTube, primarily through its layout using CSS, but also a little bit of Javascript.
Git repo for more details: https://github.com/civilblur/youlag
In case you're not aware, "FreshRSS is a self-hosted RSS feed aggregator".
The idea is that you subscribe to content creators through YouTube's RSS feed https://www.youtube.com/feeds/videos.xml?channel_id={id_goes_here}
, then browse, watch, save to playlist ("label"), right within FreshRSS.
There's also third-party extension for FreshRSS that provides the ability to use Invidious, but as we all know, the public instances are unfortunately struggling quite a bit as of writing.