Highly inspired by brave-pink-hero-green.lovable.app
Reimplemented with enhanced features and better mobile support
How to apply the filter
- Drag a photo onto the upload area, or click browse. JPEG, PNG and WebP files up to 15MB work.
- Wait a moment while the filter runs. Photos larger than 2048px on the long side are scaled down first.
- Move the intensity slider. 0% is the original photo, 100% is full duotone, and the default is 60%.
- Press Download to save the result as a PNG.
How the filter works
For each pixel the tool computes perceived brightness with the standard luminance formula, then picks a color between the two: black maps to Hero Green, white to Brave Pink, and mid-grey to an even mix.
luminance = 0.299 × R + 0.587 × G + 0.114 × B
t = luminance / 255
duotone = HeroGreen × (1 − t) + BravePink × tThe intensity slider then blends that color with the original pixel. At 60%, each pixel is 60% duotone and 40% original, so some of the photo's own color shows through.
Frequently asked questions
What are Brave Pink and Hero Green?
Brave Pink (#ec4899) and Hero Green (#10b981) are the two colors that spread as a profile picture filter on Indonesian social media during the protests of late August 2025. The pink refers to a woman in a pink hijab who stood in front of a police line in Jakarta, and the green to the jacket of Affan Kurniawan, an online motorcycle taxi driver who died after being hit by a police vehicle.
Is my photo uploaded?
No. The file is read and processed on a canvas in your browser. Nothing is sent to a server.
Can I choose other colors?
No, the tool uses the two fixed colors shown in the Color Palette card.
Why is the downloaded file bigger than my original?
The result is saved as PNG, which is lossless, so a JPEG photo usually comes out several times larger. The PNG also carries no EXIF data, so camera details and GPS location from the original are not included.
Why is the result smaller in pixels than my photo?
Images larger than 2048px on the long side are scaled down to 2048px before processing to keep the browser responsive.