Cause: macOS quarantines unsigned binaries downloaded from the internet.
Solution:
xattr -cr /usr/local/bin/getwebp
Then run getwebp --version again. If macOS still blocks it, go to System Settings > Privacy & Security and click Allow Anyway next to the GetWebP message.
Cause: If you are building GetWebP from source rather than using the prebuilt binary, the project requires a minimum Node.js version that supports ES modules and fetch.
Solution:
Use Node.js 18.x or later (20.x LTS recommended).
Run node --version to check your current version.
Use a version manager like nvm or fnm to switch versions.
Most users should download the prebuilt binary from getwebp.com/download instead of building from source.
Cause: GetWebP ties the license to a device fingerprint derived from the machine's hardware ID. Reinstalling the OS, changing hardware, or copying the config file to another machine invalidates the stored token.
Solution:
Re-activate the license on the current device:
getwebp auth XXXX-XXXX-XXXX-XXXX
If you are out of device slots, free one via getwebp logout on an old device or through the dashboard.
Cause: Multiple source files in the same directory share a base name (e.g., photo.png and photo.jpg). Both would produce photo.webp, so only the last one processed survives.
Solution:
Rename one of the conflicting source files before converting.
Cause: The CLI cannot connect to api.getwebp.com. This can be caused by no internet connection, a firewall, a corporate proxy, or DNS issues.
Solution:
Test basic connectivity:
curl -I https://api.getwebp.com
If behind a corporate proxy, configure your system's HTTP proxy settings. GetWebP uses the system fetch implementation, which respects HTTPS_PROXY and HTTP_PROXY environment variables:
Cause:getwebp status could not reach the server, so it displayed the last known state from local cache.
Solution: This is expected behavior when offline. The cached status is still valid for conversions (the license JWT is verified locally). To refresh, restore network access and run:
The --debug flag implies --verbose. Debug messages are prefixed with [debug] and written to stderr, so they do not interfere with --json output on stdout.
When converting a .webp file without specifying a separate output directory, the input and output paths are identical. GetWebP detects this and skips the file to prevent data loss.
Workaround: Use -o to specify a different output directory:
The config file at ~/.config/getwebp-nodejs/config.json is encrypted using the machine's hardware ID. If the hardware ID changes (e.g., hostname change on a system where the hardware ID could not be read), the stored token becomes unreadable.
Workaround: Re-activate the license:
getwebp auth XXXX-XXXX-XXXX-XXXX
You can override the config directory with the GETWEBP_CONFIG_DIR environment variable if needed.
The Free plan processes a maximum of 10 images per run with a 3-second delay between each. Remaining files are reported as skipped.
Workaround: Run the command multiple times (files are processed in alphabetical order), or upgrade to Starter/Pro for unlimited batch conversion at getwebp.com/pricing.