{"id":48497389,"url":"https://github.com/oliverjessner/bulkpixel","last_synced_at":"2026-06-30T16:00:29.832Z","repository":{"id":349755078,"uuid":"1194873913","full_name":"oliverjessner/BulkPixel","owner":"oliverjessner","description":"🖼️ Convert more. Click less.","archived":false,"fork":false,"pushed_at":"2026-06-29T20:52:43.000Z","size":5322,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-29T22:21:08.114Z","etag":null,"topics":["bulk-image","image-manipulation","image-processing"],"latest_commit_sha":null,"homepage":"https://oliverjessner.at/bulkpixel","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/oliverjessner.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/funding.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"oliverjessner","buy_me_a_coffee":"oliverjessner"}},"created_at":"2026-03-28T23:26:21.000Z","updated_at":"2026-06-29T20:52:43.000Z","dependencies_parsed_at":"2026-04-07T13:04:00.073Z","dependency_job_id":null,"html_url":"https://github.com/oliverjessner/BulkPixel","commit_stats":null,"previous_names":["oliverjessner/bulkpixel"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/oliverjessner/BulkPixel","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oliverjessner%2FBulkPixel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oliverjessner%2FBulkPixel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oliverjessner%2FBulkPixel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oliverjessner%2FBulkPixel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oliverjessner","download_url":"https://codeload.github.com/oliverjessner/BulkPixel/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oliverjessner%2FBulkPixel/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34973617,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-30T02:00:05.919Z","response_time":92,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bulk-image","image-manipulation","image-processing"],"created_at":"2026-04-07T13:00:26.958Z","updated_at":"2026-06-30T16:00:29.792Z","avatar_url":"https://github.com/oliverjessner.png","language":"JavaScript","funding_links":["https://github.com/sponsors/oliverjessner","https://buymeacoffee.com/oliverjessner"],"categories":[],"sub_categories":[],"readme":"# BulkPixel 🖼️\n\n![BulkPixel convert view](/src/assets/mockups/bulkpixel_1920.webp)\n\n**Convert more. Click less.**\n\nBulkPixel is a local-first desktop app for fast batch image processing (Mac Only).  \nDrop in multiple images, choose an output format, resize if needed, and export everything in one go.\n\nBuilt for people who do not want a bloated image editor just to prepare assets for the web, blogs, apps, client work, or side projects.\n\n## Why BulkPixel\n\nMost image tools are either too heavy, too online, or too annoying for simple repetitive work.\n\nBulkPixel focuses on the practical stuff:\n\n- batch convert images in seconds\n- resize without breaking aspect ratios\n- export to modern web-friendly formats\n- keep filenames predictable\n- avoid accidental overwrites\n- see honest file savings after conversion\n\nIt is local-first, fast, and intentionally restrained.\n\n## Features\n\n### Available now\n\n- Drag and drop images into the app\n- Native file picker support\n- Batch conversion for multiple images at once\n- Input support for `jpg`, `jpeg`, `png`, `avif` and `webp`\n- Export to `jpg`, `png`, `avif` or `webp`\n- Resize by width or height\n- Automatic aspect-ratio preservation\n- Quality control for JPEG, WEBP and AVIF\n- Honest PNG handling without fake \"compression\" promises\n- Optional filename prefix or postfix (toggle between modes)\n- Output folder selection\n- Presets for saving reusable conversion settings\n- Terminal CLI for scripted conversion, preset management, and statistics\n- Collision-safe saving with `_1`, `_2`, and so on\n- Per-image and total savings analysis\n- Clear success, partial-success, and error feedback\n\n## Presets\n\nPresets let you save complete conversion setups and reuse them later.  \nA preset stores the export format, resize setting, quality, filename prefix or postfix, and output folder.\n\nUse `Convert` for normal batch conversion. Use `Presets` to create, edit, duplicate, or delete saved setups. In the conversion settings, the preset dropdown lets you switch between `Default`, saved presets, and `Custom` when settings are changed manually.\n\n![BulkPixel presets view](/src/assets/mockups/presets_1920.webp)\n\n## CLI\n\nBulkPixel also ships a `bulkpixel` command for terminal workflows.\n\nInstall BulkPixel and the CLI with Homebrew:\n\n```sh\nbrew tap oliverjessner/tap\nbrew install --cask bulkpixel\n```\n\nSee [docs/CLI.md](docs/CLI.md) for commands, flags, preset usage, overwrite rules, and statistics output.\n\n## macOS Open With test cases\n\n1. BulkPixel is closed:\n    - Select a PNG in Finder\n    - Right-click -\u003e Open With -\u003e BulkPixel\n    - Expected: BulkPixel starts and the image appears in the queue\n\n2. BulkPixel is already running:\n    - Select multiple JPG, PNG, or WEBP files in Finder\n    - Right-click -\u003e Open With -\u003e BulkPixel\n    - Expected: The existing app receives the files and adds them to the queue\n\n3. Unsupported file type:\n    - Open a TXT file or another unsupported file with BulkPixel\n    - Expected: The file is ignored or reported as unsupported without starting a conversion\n\n4. Duplicate file:\n    - Open the same file twice with BulkPixel\n    - Expected: The app does not crash and the queue remains valid. BulkPixel currently keeps one queue entry per path while it is already loaded.\n\n## Who it is for\n\nBulkPixel is useful for:\n\n- bloggers and journalists preparing web images\n- indie developers shipping assets quickly\n- designers exporting lighter previews\n- creators cleaning up folders of screenshots or thumbnails\n- anyone who wants a focused desktop utility instead of a full editor\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foliverjessner%2Fbulkpixel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foliverjessner%2Fbulkpixel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foliverjessner%2Fbulkpixel/lists"}