A self-hosted local image compressor that runs in your browser. - civilblur/mazanoke
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?
Haha, very interesting scenario, glad it worked out well!
That's a valid question! The app is intended for less tech-savvy people, as such, the terminologies used are to accommodate those users. "Upload" would rather be "Import", while "Download" would be "Export".
I've shared the use case in a previous Lemmy post:
This app is designed to compress smaller batches of images, aimed at casual users who need to compress and convert a few images at a time.
I created it primarily for friends and family who are less tech-savvy, to help them compress and convert images in a simple, safe, and private way.

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
Ah I see, I'm still on webcord to be honest (not for any particular specific reason).
Probably could be used with betterdiscord that supports js plugins.
Yes indeed, the library I used "Browser Image Compression" is quite easy to work with. I did this as a weekend project + a few more days to prepare for open sourcing.
This has analytics tracking and is made by Google though. I intentionally wanted to stray away from that.
Edit: typo

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
At the moment, I haven't integrate Youlag with FreshRSS as a full fledge extension, but once that is in place, it would be possible to store user preferences. While it requires time and effort, I believe it shouldn't be too hard to implment this feature.
Sorry about that, I've included the fix in the latest release, and instructions on how to bypass the loading screen in the release notes:
https://github.com/civilblur/youlag/releases/tag/v3.0.4
Here in an excerpt from the release note:
In case FreshRSS got stuck in a loading state with the
v3.0.2
release:You can manually bypass the loading state by opening the inspect mode on your browser. Within the "Elements" tab, locate the
body
element and add the CSS classyoulag-loaded
.Example:
- From
<body class="normal">
- To
<body class="normal youlag-loaded">
.The adjustment above will exit the loading state, allowing you to interact with the content and access the extension page.
For your convenience, below is the url path to the "User CSS" extension page:
https://yourfreshrssdomain.com/i/?c=extension&a=configure&e=User%2BCSS
Head to this page and replace the old CSS with the one provided in this release.
Edit: Fixed typo on CSS class name
I suggest using the extension "YouTubeChannel2RssFeed", with this, you don't have to manually convert the youtube channel links to RSS feed links.
With YouTubeChannel2RssFeed installed, you can simply use the url: https://www.youtube.com/@somechannel
and it will add it as https://www.youtube.com/feeds/videos.xml?channel_id=%7Bid_goes_here%7D
.
Edit: Link to extension
I believe what you might be referring to was reported here: https://github.com/civilblur/youlag/issues/2
The workaround was to enable the User JS extension first, and then the User CSS. This order requirement will be fixed in the next update, and the README has been updated.
If the page looks like it is constantly loading, you can open up the inspect mode on your browser, then add the CSS class youlag-loaded
to the body element. This will allow you to manually exit out of the loading state.
Please note that there is nothing in the Youlag extension that can or will inherently corrupt your FreshRSS instance, so all your data is safe.
Edit 2025-02-23:
Please use the latest release, which is v3.0.4
as of writing.
Since I don't use a TV myself, I have not looked into this scenario unfortunately.

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.