Skip to main content
ZoomIt is a screen zoom and annotation tool designed for technical presentations and demonstrations. Zoom into any part of your screen, draw on it with annotations, and use type-mode to simulate keyboard input from a script.

Activation

1

Zoom Mode

Press Ctrl + 1 to activate zoom mode (default).
2

Draw Mode

Press Ctrl + 2 to enter draw/annotation mode.
3

Type Mode

Press Ctrl + 3 to activate demo-type mode.
4

Live Zoom

Press Ctrl + 4 for live zoom (follows cursor).
All shortcuts are customizable in PowerToys Settings > ZoomIt.

Features

Zoom Mode

Magnify any part of your screen for better visibility during presentations.
Activate: Ctrl + 1
  • Move mouse to zoom into different areas
  • Scroll wheel to adjust zoom level
  • Click to exit zoom mode
  • Screen freezes at zoom activation
Customize zoom behavior:
  • Zoom factor: How much to magnify (2x, 3x, 4x, etc.)
  • Zoom window size: Portion of screen to magnify
  • Animation: Smooth zoom in/out transitions
  • Background: Area outside zoom region

Draw/Annotation Mode

Draw directly on your screen during presentations.
1

Activate Drawing

Press Ctrl + 2 to enter annotation mode.
2

Draw Annotations

Click and drag to draw freehand.
3

Use Drawing Tools

Access shapes, lines, arrows, and text.
4

Exit

Press Esc to clear annotations and exit.

Drawing Tools

  • Freehand drawing
  • Straight lines
  • Arrows
  • Rectangles
  • Ellipses
  • Text annotations

Drawing Controls

  • Color selection
  • Line thickness
  • Eraser tool
  • Undo/redo
  • Clear all
While in draw mode:
KeyAction
Mouse dragDraw freehand
Shift + dragDraw straight line
Ctrl + dragDraw arrow
TabChange color
RDraw rectangle
EDraw ellipse
TAdd text
Ctrl + ZUndo
Ctrl + YRedo
Ctrl + CCopy screenshot with annotations
E keyEraser mode
EscClear and exit

Demo Type Mode

Simulate typing from a script for demonstrations and tutorials. From source /src/modules/ZoomIt/ZoomIt/DemoType.h:14-26:
#define MAX_INPUT_SIZE      1048576  // 1 MiB
#define MAX_TYPING_SPEED    10       // ms
#define MIN_TYPING_SPEED    100      // ms

int StartDemoType(const TCHAR* filePath, 
                  const DWORD speedSlider, 
                  const BOOLEAN userDriven);
1

Create Script

Prepare a text file with the content to “type” (max 1 MB).
2

Activate Type Mode

Press Ctrl + 3 to start demo-type mode.
3

Select Script

Choose your script file when prompted.
4

Control Playback

Use keyboard to control typing speed and progression.
Automated typing:
  • Set typing speed (10-100 ms per character)
  • Script types automatically
  • Natural typing simulation
  • Pauses at punctuation
During demo-type:
KeyAction
Any keyType next character (manual mode)
Increase typing speed
Decrease typing speed
SpacePause/resume (auto mode)
EscExit type mode
Demo Type file size is limited to 1 MB. Larger files will fail to load.From source /src/modules/ZoomIt/ZoomIt/DemoType.h:15

Screen Recording

Record screen with annotations and zoom. From source files:
  • GIF recording: /src/modules/ZoomIt/ZoomIt/GifRecordingSession.h, GifRecordingSession.cpp
  • Audio capture: /src/modules/ZoomIt/ZoomIt/LoopbackCapture.h, LoopbackCapture.cpp
  • GIF recording: Capture to animated GIF
  • Audio loopback: Record system audio
  • Frame capture: Control frame rate and quality
  • Annotations: Draw while recording
  • Zoom recording: Record zoomed regions
Implementation:
  • GifRecordingSession.cpp - GIF encoding and session management
  • LoopbackCapture.cpp - Audio capture via WASAPI
  • AudioSampleGenerator.cpp - Audio processing
  • CaptureFrameWait.cpp - Frame timing

Use Cases

Product Demos:
  • Zoom into UI details
  • Annotate specific features
  • Highlight important buttons/menus
  • Circle areas of interest
  • Draw arrows to guide attention
Example: Demo a new feature by zooming into the menu, drawing an arrow to the new option, and circling it.
Educational Sessions:
  • Zoom into code or diagrams
  • Annotate formulas or equations
  • Highlight key concepts
  • Use demo-type to show code without typos
  • Record lessons with annotations
Example: Teaching Python - use demo-type to “write” code perfectly while explaining each line.
Conference Talks:
  • Emphasize code snippets
  • Draw diagrams on slides
  • Annotate architecture diagrams
  • Zoom into terminal output
  • Highlight error messages
Example: During conference talk, zoom into terminal, highlight specific output line, draw box around it.
Remote Assistance:
  • Zoom into error messages
  • Annotate screenshots
  • Circle problem areas
  • Draw step-by-step instructions
  • Record issue reproduction
Example: During screen share, zoom into error dialog, circle error code, annotate solution steps.
Tutorial Videos:
  • Record screen with zoom
  • Add annotations during recording
  • Create GIF tutorials
  • Demonstrate click sequences
  • Show keyboard shortcuts visually
Example: Create GIF showing how to use a feature - zoom, annotate, record to GIF, share.

Configuration

Activation Shortcuts

Customize all ZoomIt shortcuts in PowerToys Settings:
FunctionDefaultCustomizable
Zoom modeCtrl + 1Yes
Draw modeCtrl + 2Yes
Type modeCtrl + 3Yes
Live zoomCtrl + 4Yes
RecordingCtrl + 5Yes

Appearance Settings

  • Zoom magnification level
  • Zoom window size and shape
  • Background dim level
  • Smooth zoom animation
  • Cursor visibility in zoom
  • Default pen color
  • Line thickness
  • Available colors
  • Background transparency
  • Annotation persistence
  • Font and size
  • Text color and background
  • Typing speed range
  • Cursor blink rate

Recording Settings

  • GIF frame rate
  • Output quality
  • Audio recording enabled/disabled
  • Save location
  • Maximum recording duration

Advanced Features

Audio Capture

From source /src/modules/ZoomIt/ZoomIt/LoopbackCapture.h:
ZoomIt can capture system audio during recording:
  • WASAPI loopback capture
  • Records all system sounds
  • Synchronized with video
  • Configurable audio quality
Implementation: LoopbackCapture.cpp - Handles audio capture session

Audio Sample Generation

From source /src/modules/ZoomIt/ZoomIt/AudioSampleGenerator.h:
  • Sample rate conversion
  • Audio format handling
  • Buffer management
  • Synchronization with frames
Implementation: AudioSampleGenerator.cpp

Frame Capture Timing

From source /src/modules/ZoomIt/ZoomIt/CaptureFrameWait.h:
Precise frame capture timing:
  • Consistent frame rates
  • Adjustable FPS
  • Frame skip handling
  • Performance optimization
Implementation: CaptureFrameWait.cpp

Keyboard Shortcuts Reference

Global Shortcuts

ShortcutFunction
Ctrl + 1Zoom mode
Ctrl + 2Draw mode
Ctrl + 3Type mode
Ctrl + 4Live zoom
Ctrl + 5Start/stop recording
EscExit current mode

Zoom Mode Shortcuts

ShortcutAction
Zoom in
Zoom out
Mouse scrollAdjust zoom
Mouse movePan view
Ctrl + CCopy zoomed region
Click or EscExit zoom

Draw Mode Shortcuts

ShortcutAction
DragFreehand draw
Shift + dragStraight line
Ctrl + dragArrow
RRectangle
EEllipse
TText
TabChange color
Ctrl + ZUndo
Ctrl + YRedo
Ctrl + CCopy with annotations
EscClear and exit

Type Mode Shortcuts

ShortcutAction
Any keyType next character (manual)
Faster typing
Slower typing
SpacePause/resume (auto)
EscExit type mode

Troubleshooting

Checklist:
  • Ensure ZoomIt is enabled in PowerToys Settings
  • Check activation shortcuts aren’t conflicting
  • Verify PowerToys is running
  • Try different shortcut combinations
  • Restart PowerToys
Common conflicts: Ctrl + 1/2/3 may conflict with browser tabs or other apps.
Problems:
  • Pixelated zoom on high-DPI displays
  • Blurry magnification
  • Performance lag during zoom
Solutions:
  • Reduce zoom magnification level
  • Close resource-intensive applications
  • Check display scaling settings
  • Update graphics drivers
Issues:
  • Can’t draw annotations
  • Pen not appearing
  • Colors not changing
Fixes:
  • Verify you’re in draw mode (Ctrl + 2)
  • Check mouse/stylus is working
  • Try different drawing tool (press R, E, T)
  • Reset ZoomIt settings
Error Messages:
  • “Error loading file”: File not found or inaccessible
  • “File size overflow”: File exceeds 1 MB limit
  • “Unknown file data”: File encoding not supported
Solutions:
  • Verify file path is correct
  • Reduce file size (under 1 MB)
  • Save file as plain text (UTF-8 or ASCII)
  • Check file permissions
Problems:
  • GIF not saving
  • Audio not captured
  • Recording stops unexpectedly
Fixes:
  • Check save location has disk space
  • Verify audio recording is enabled in settings
  • Reduce recording quality for longer recordings
  • Close other recording software
  • Check Windows audio device settings

Best Practices

Effective Use:
  1. Plan zoom areas - Know what you’ll magnify before presenting
  2. Practice annotations - Try drawing tools before live demo
  3. Prepare type scripts - Write and test demo-type files beforehand
  4. Test shortcuts - Verify ZoomIt shortcuts don’t conflict
  5. Use colors wisely - Choose high-contrast annotation colors
Educational Best Practices:
  • Zoom into code to explain specific lines
  • Use demo-type for complex code to avoid typos
  • Annotate diagrams with arrows and circles
  • Record GIF tutorials for asynchronous learning
  • Combine zoom + annotations for maximum clarity
Creating Tutorials:
  • Keep recordings short (under 2 minutes for GIFs)
  • Plan recording content and flow
  • Use annotations to highlight steps
  • Test recording quality before final take
  • Consider file size for sharing

Source Code

Location: /src/modules/ZoomIt/ZoomIt/
  • Demo type: DemoType.h, DemoType.cpp
  • GIF recording: GifRecordingSession.h, GifRecordingSession.cpp
  • Audio capture: LoopbackCapture.h, LoopbackCapture.cpp
  • Audio processing: AudioSampleGenerator.h, AudioSampleGenerator.cpp
  • Frame timing: CaptureFrameWait.h, CaptureFrameWait.cpp
ZoomIt in PowerToys is based on the original Sysinternals ZoomIt by Mark Russinovich, now integrated into the PowerToys suite.

Build docs developers (and LLMs) love