quikgif record
Record a window or screen region as a GIF.
quikgif record [options]
Target Selection
Specify what to record. If no target is given, an interactive window picker is shown.
| Flag | Type | Description |
|---|---|---|
--window | UInt32 | Window ID to capture (use list-windows to find IDs) |
--app | String | Filter/auto-select by app name. Auto-selects if only one window matches |
--region | String | Screen region: x,y,w,h (origin+size) or x1,y1:x2,y2 (corners) in points |
--crop | String | Window sub-region: x,y,w,h or x1,y1:x2,y2 relative to content area. Requires --window or --app |
info
--region and --crop are mutually exclusive. --region captures a screen area directly and cannot be combined with --window or --app. Use --crop to capture a sub-region of a specific window.
Recording Parameters
| Flag | Type | Default | Description |
|---|---|---|---|
--duration | Double | -- | Auto-stop after N seconds. Without this, stop with Ctrl+C |
--fps | Int | 30 | Frame rate |
--show-cursor / --no-show-cursor | Bool | true | Show cursor in capture |
--include-title-bar / --no-include-title-bar | Bool | false | Include window title bar |
Output
| Flag | Type | Default | Description |
|---|---|---|---|
-o, --output | String | recording.gif | Output file path |
--max-width | Int | 800 | Max output width in pixels |
--full-resolution | Bool | false | Use native resolution (ignores --max-width) |
--loop-count | Int | 0 | GIF loop count (0 = infinite) |
--palette-strategy | String | auto | Color palette strategy: auto, global, or per-frame |
Visual Effects
These features require Accessibility permission for event capture. Without it, the flags are accepted but have no effect.
| Flag | Type | Default | Description |
|---|---|---|---|
--cursor-smoothing / --no-cursor-smoothing | Bool | false | Smooth cursor movement between frames |
--click-indicators / --no-click-indicators | Bool | false | Show visual indicators on mouse clicks |
--type-smoothing / --no-type-smoothing | Bool | false | Normalize typing speed for consistent appearance |
--keystroke-badges / --no-keystroke-badges | Bool | false | Show floating badges for keyboard shortcuts |
--zoom-cursor / --no-zoom-cursor | Bool | false | Zoom to cursor region for detail focus |
--zoom-size | Int | 600 | Zoom crop width in pixels (height derived from aspect ratio) |
--zoom-padding | Int | 80 | Zoom dead-zone padding in pixels |
Timing
| Flag | Type | Default | Description |
|---|---|---|---|
--idle-strategy | String | -- | Idle cushioning strategy: cut, ramp, or fade. Disabled by default |
--idle-threshold | Double | 2.0 | Seconds of inactivity before cushioning kicks in |
Other
| Flag | Description |
|---|---|
-q, --quiet | Suppress progress output |
Examples
Record Terminal for 10 seconds with click indicators:
quikgif record --app Terminal --duration 10 --click-indicators -o terminal.gif
Record a screen region at 60fps:
quikgif record --region 0,0,1920,1080 --fps 60 --full-resolution -o fullscreen.gif
Record a window sub-region with cursor zoom:
quikgif record --app "VS Code" --crop 0,0,800,400 --zoom-cursor -o editor.gif
Record with polished post-processing:
quikgif record --app Terminal --duration 8 \
--cursor-smoothing --click-indicators --type-smoothing \
--keystroke-badges --idle-strategy fade -o polished.gif