Workflow & Usage
-
Add images
Drag & drop, paste, or click to select JPEG, PNG, or WebP files.
You can work with a single image or batch-process many at once. -
Choose your colors
- Dot Color — applied to the halftone dots
- Background Color — filled behind the dots in the final image
Both controls include a visual color picker and a synced hex input.
-
Adjust the halftone structure
Fine-tune the look using:- Dot Size — controls the maximum size of each dot
- Spacing — distance between dots
- Strength — controls how strongly brightness affects dot size
- Invert — makes brighter areas produce larger dots instead of darker ones
-
Preview instantly
All images update live as you change settings.
Previews are contained inside each card so borders remain clean and unaltered. -
Export your results
- Download images one by one
- Export all selected images as a ZIP
Files keep their original format and use clear names like:
photo-halftone-111827-ffffff.jpg
Everything runs fully on-device and offline-friendly.
Perfect For
-
Posters & Print-Style Graphics
Recreate classic newspaper, comic, or risograph-inspired visuals. -
Screen Printing & Merch Design
Generate dot patterns suitable for high-contrast prints. -
Album Covers & Editorial Art
Create bold, textured imagery with precise control. -
Brand & Marketing Assets
Match dot and background colors to brand palettes. -
Creative Experiments
Explore abstract patterns by pushing dot size, spacing, and strength.
Tips for Best Results
-
High-contrast images work best.
Clear light and dark areas produce more readable dot patterns. -
Use spacing and strength together.
Larger spacing with high strength creates bold, graphic results. -
Try invert with dark backgrounds.
Inverted halftones are ideal when using light dots on dark backgrounds. -
Batch consistently.
Apply the same settings across multiple images for a cohesive look. -
Optimize after export.
Run your results through Image Compressor or Progressive JPEG Converter for production-ready file sizes.
How It Works
-
Luminance analysis
Each pixel’s brightness is measured to determine how large its corresponding dot should be. -
Grid-based dot rendering
The image is sampled on a regular grid defined by dot size and spacing. -
Strength & inversion mapping
Brightness values are shaped using a gamma curve and optional inversion for creative control. -
Canvas-based rendering
Everything is rendered using the HTML Canvas API — no WebGL, no AI, no servers. -
EXIF-aware loading
Images are loaded withcreateImageBitmap({ imageOrientation: 'from-image' })to preserve correct orientation from cameras and phones.