Building simple tools often reveals complicated problems.
I started Piczilo because common image tasks—compressing a photo, resizing it for a platform, converting formats, or creating a favicon—usually require uploading files to an unknown server.
For many users, that creates two concerns:
- Where is the image being uploaded?
- Is it stored after processing?
I wanted Piczilo to take a different approach: process images directly inside the browser whenever possible.
What is Piczilo?
Piczilo is a collection of free image tools for everyday tasks.
It currently includes tools for:
- Compressing JPG, PNG, and WebP images
- Compressing images to targets such as 50 KB, 100 KB, 200 KB, and 500 KB
- Resizing images and creating platform-specific dimensions
- Converting between common image formats
- Working with HEIC, SVG, PDF, and favicon files
- Preparing passport photos and social media images
The goal is simple: choose a file, adjust the settings, and download the result.
Why browser-based processing?
Privacy was the main reason.
For supported tools, the selected image is processed locally in the user’s browser. It does not need to be uploaded to Piczilo’s server before the result can be created.
This approach also has some useful technical benefits:
- Less server storage and processing
- Faster feedback after selecting a file
- No upload wait for routine image tasks
- Lower infrastructure requirements
- A clearer privacy model for users
The trade-off is that performance depends partly on the user’s device. Large images and complex formats require careful memory management and validation.
The technology behind it
Piczilo is built with:
- Laravel
- Inertia
- React
- TypeScript
- Tailwind CSS
Laravel handles routing, localization, SEO metadata, and application structure. React and TypeScript power the interactive image workspaces in the browser.
Each tool has its own input rules, processing logic, output format, and user guidance. Keeping these tools consistent while supporting different formats has been one of the most interesting parts of the project.
Challenges I encountered
1. Validating files safely
A filename or MIME type alone is not always reliable. Image tools need to validate the selected file, its format, dimensions, and size before processing begins.
Clear error messages are equally important. A user should know whether a file is unsupported, damaged, or simply too large.
2. Handling large images
Browser-based processing can consume significant memory, especially on mobile devices.
I had to think carefully about file limits, image dimensions, previews, temporary browser objects, and releasing resources after processing.
3. Producing predictable output sizes
Reducing an image below a specific size is not as simple as applying one fixed quality value.
The tool may need to test multiple quality levels to find a useful balance between visual quality and file size. It also needs to explain that an exact visual result cannot always be guaranteed for every image.
4. Making many tools feel consistent
Compression, resizing, conversion, and document tools have different settings, but the experience should still feel familiar.
I focused on a shared flow:
- Choose a file
- Review or adjust settings
- Process the image
- Download the result locally
What I learned
A useful tool does not need a complicated interface.
Users mainly want three things:
- A clear explanation of what the tool does
- Confidence that their file is handled safely
- A predictable download result
I also learned that performance, accessibility, SEO, and privacy cannot be treated as final-stage tasks. They influence architecture and interface decisions from the beginning.
What comes next?
I am continuing to improve mobile performance, expand useful image workflows, and make the instructions clearer for non-technical users.
I would especially appreciate feedback on:
- Which image task you perform most often
- Whether the privacy explanation is clear
- Which additional tool would be genuinely useful
You can try the tools at piczilo.com.
Thanks for reading. I would love to hear what you would improve.
Top comments (0)