Ken Silverman's Utility Page

Compression Utilities:

File Size/Date Description Requirements
FLACOUT.EXE 17,920 bytes
FLACOUT optimizes the size of .FLAC audio files losslessly. With the right options, it can often beat the reference encoder by 3-5%. It does an exhaustive search (except for block splits) and was designed to optimize compression. Due to its slow speed, it is best to run it only on small files. ;-) Note: headers will be stripped. Click here for license. WIN32 command line
PNGOUTWin (link)
The professional version of PNGOUT, featuring an easy-to-use GUI. Supports all features of the command line version (described below), plus more. PNGOUTWin makes it easier to do batch processing and takes full advantage of multi-core CPUs. Please visit for more information. WIN32 GUI
PNGOUT.EXE 38,912 bytes
PNGOUT optimizes the size of .PNG files losslessly. It uses the same deflate compressor I wrote for KZIP.EXE (see below). With the right options, it can often beat other programs by 5-10%. That includes pngcrush -brute, optipng -o7, advpng -z4, etc.. PNGOUT is a great tool for optimizing the size of web pages or squeezing game content onto mobile devices. Almost all .PNG files on my website were optimized with PNGOUT. For a detailed description of the options, please check out the PNGOUT tutorial written by Kerry Watson. Click here for license. For a changelog, see: here or here.WIN32 command line
PNGHALF.EXE 32,768 bytes
PNGHALF is a simple utility which halves the dimensions of an image file by averaging the R/G/B/A of each group of 2x2 pixels - very handy for when you work with artists who like to make "1300-pixel arrows". ;-) Output files are NOT compressed so it is highly recommended to run a PNG re-compressor (such as PNGOUT above) on the results.WIN32 command line
KZIP.EXE 14,848 bytes
My own PKZIP-compatible compressor focusing on space over speed. KZIP creates smaller .ZIP files than PKZIP with maximum compression enabled and even beats 7-Zip most of the time. I use a few tricks beyond what your typical compressor will do. The main one is an exhaustive search of all patterns. The other one is my advanced block splitter. ZIP files created with KZIP are compatible with all of the latest .ZIP software - just that if you use KZIP, your file will probably be smaller. Decompression is still very fast, making KZIP the perfect tool for shaving off seconds from download times. What will you do for a byte? :) Click here for license. WIN32 command line
ZIPMIX.EXE 9,216 bytes
Sometimes, when you run 2 different .ZIP programs on the same data (PKZIP & KZIP for example), some files get compressed better in one program, while other files get compressed better in the other. ZIPMIX will take the best files from each one and create a new output file, which is guaranteed to be equal to or smaller in size to both of the input files. ZIPMIX can also be used to perform boolean operations on ZIP files, such as merging 2 ZIP files together, or updating a new file (with some tricks). You can download the source code here: ZIPMIX_SRC.ZIP (5,232 bytes, 05/01/2016) This code may be used freely. WIN32 command line
REKZIP.ZIP 379 bytes
Here's a little batch file I wrote for KZIP to directly re-compress an existing ZIP file. I have tried to make the batch file as safe as possible - meaning you shouldn't lose the original file if there's an error during one of the steps. I think the worst that can happen is you end up with a harmless temporary sub-directory - and that's only if your computer freezes! If you really want to feel cool, you can re-compress a whole directory of ZIP files using this command: "for %i in (*.zip) do rekzip %i" : ) Someday, I might actually get around to integrating this functionality into KZIP.EXE.. WIN32 command line
Linux & MacOSX ports of PNGOUT, KZIP, and ZIPMIX (link) Due to popular demand, here are ports of PNGOUT, KZIP, and ZIPMIX to Linux and MacOSX. Thanks to Jonathon Fowler for all of his assistance in porting, letting me use his machines remotely, packaging the files, and of course hosting. I asked JonoF to host these files because he has more experience with non-Windows platforms than I do. Go grab a copy of the ports at JonoF's site! Click here for license. Linux or MacOSX

PNGOUT / KZIP license:

I have gotten a lot of requests about bundling the command line executables, or releasing the source code to KZIP and PNGOUT. This is my license (updated 01/16/2021):

Compression links:

PNGGauntlet: A .NET-based Windows wrapper for PNGOUT by Ben Hollis.
PNGOUT tutorial written by Kerry Watson.
PNGOUT review by Gregory Wild-Smith. WARNING: his site seems to crash my browser!
Ultimate Command Line Compressors: Comparison of many compression utilities, including PNGOUT and KZIP.
Maximum Compression: Comparison of many compression utilities, including KZIP.
RFC1951: A great technical document for programmers who are interested in learning about the deflate standard (PNG and ZIP are both based on deflate).
PNG Home Site: The mother of all PNG sites.

Other good PNG/ZIP compressors:
7-ZIP: A good compromise of compression ratio and speed that falls between PKZIP and KZIP.
OPTIPNG: Compresses PNG files using libpng, takes the best of many trials; inspired by PNGCRUSH, with a few more features.
ADVPNG (and ADVDEF): PNG compressor based on the 7-zip deflate engine.
DEFLOPT (and BJWFLATE): ZIP recompression utilities by Ben Jos Walbeehm with similar goals to KZIP (space over speed).

Other Windows Utilities:

KWINCHEAT.ZIP 17,600 bytes Automatic player AI for Minesweeper, Solitaire, and Internet Checkers. Have you ever wanted to throw some advanced computer AI against an unsuspecting Internet Checkers player? :) Did you know that Solitaire has a scoring bug if you win in less than 30 seconds? Have you ever been so lazy that Minesweeper seemed like manual labor? Well, now you're in luck because I've decided to share my cheats with you! Please read the included text file for more hints and instructions. WIN32
KWINCHEAT_SRC.ZIP 18,399 bytes The source code to Mineplay, Solplay, and Checkplay. The code is best viewed with tab stops set to 3. VC6 or above
CHECKERS.EXE 17,920 bytes
A stand-alone test checkers game I wrote just before I started writing Checkplay. Now you can see for yourself how easy it is to lose to my computer AI :) WIN32
CHECKERS_SRC.ZIP 14,067 bytes
The source code to my stand-alone checkers game. The code is best viewed with tab stops set to 3. To compile Winmain.cpp with VC6, you'll need to install the Processor Pack which is available somewhere at VC6 or above
KPIC.EXE 67,072 bytes, 08/09/2015 Ken's PICture viewer. Supports: JPG,PNG,GIF,TGA,PCX,BMP. View all files in a directory or files inside a .ZIP. (no need to extract first!) Example: kpic / *.png *.jpg. Select any DirectX9 mode on the command line. Example: kpic /1024x768 *.* KPIC allows you to scroll and zoom quickly (hold mouse button). It supports a fancy 4x4 filter (uses MMX code) to interpolate samples cleanly when you use the zoom feature. This is a high quality filter - most 3D accelerators use bilinear interpolation which is only a 2x2 filter :) There are 3 interpolation modes; use TAB to select between them. (Mode 0:4x4 when stopped/nearest when moving, Mode 1:4x4 always, Mode 2:nearest always). (See PNGOUT.HTM for a more complete description of supported image formats) WIN32
KPIC_SRC.ZIP 52,489 bytes
The source code to KPIC. My exe above is compiled with VC6 to get smaller EXE size, but any newer 32-bit version of VC should work. VC6 or above
SUCKTHUMBS.ZIP 71,552 bytes
Simple Thumbs.db viewer. With SuckThumbs, you can save individual tiles, or spawn a default viewer (if the original file exists). Press F1 inside the program for further help. Source code included. WIN32, VC6 or above
KC.EXE 113,152 bytes
My own text editor for windows, featuring smooth panning, support for large text files and keys similar to DOS EDIT. I use this editor all the time! If you do Visual C or Java programming at the command prompt, you can press F5 while the source is loaded to compile, display errors (if applicable) and run. Press F5 and study the dialog to see how to set this up. Or look at (12/26/2020, 6,033 bytes) KC_GUIDE.TXT for a more complete list of KC commands. Source code here: (12/26/2020, 80,384 bytes). WIN32, VC6 or above
KPROF.EXE 79,360 bytes
A command line sampler/profiler for Windows. Visual C includes a function-based sampler/profiler. This is much better! Spawn an executable of your choice (2nd command line option) or latch onto an existing program using its PID (you can look up the PID in Task Manager). When you exit the program, KPROF will dump a listing of all the hotspots to the console, along with the disassembled code. Example syntax: "kprof pngout.exe image.png". To save the results to a file, add "> results.txt" to the end of the command. This program is meant to be run inside a command prompt. WIN32
STOPCHOP.EXE 36,352 bytes
Record without having to worry about pressing the start button on time. StopChop records at CD quality (by default), allocating a large circular buffer. As soon as you press ENTER, it switches to play mode, where you can view the last so many minutes recorded. In the play mode, you can crop the sound, fade the end, remove silence, and save the sound. To crop, move the mouse or arrow keys, then press ',' and '.' to set the respective marker. Play the sound using SPACE BAR, Home or End keys. Once finished, I like to convert the WAV to FLAC, MP3, or OGG using a separate utility. WIN32
HMAVIEW.EXE 122,880 bytes
Huge Microphone Array VIEWer, used for audio research. Allows you to quickly view WAV files with hundreds of channels. Supports fast zoom and pan using the mouse, in either time or frequency domain. Marks can be placed using the Insert or Delete keys and saved to an associated .CSV file. WIN32
KS2.ZIP 120,386 bytes
A simple MIDI sequencer for Windows. KS2 does not support effects of any kind. I have written a bunch of .KS2 songs, but they all use .WAV files that are probably copyright, so I'm reluctant to release them. WIN32

Old Utilities:

BLANK.ZIP 232 bytes This screen saver uses the VESA DPMS functions. You can select between 3 options: STAND-BY, SUSPEND, and OFF. DOS16
CCOPY.EXE 50,442 bytes Copies files at 115,200 baud using the serial port. Uses compression. Automatically skips files AND parts of files that haven't changed. For example, if you appended some bytes at the end of a huge text file, CCOPY will update the file very quickly. DOS32
DCOPY.EXE 55,488 bytes Copies files over a local network using the IPX protocol. Useful when you have problems sharing hard drives. I used this all the time when testing games over a network. DOS32
KSWEEP.EXE 6,369 bytes Use this utility to run a given program on all specified files located in the current directory and any subdirectory of the current one. For example you could play all .WAV files in all subdirectories of C:\WINDOWS with just a single command. DOS16
FINDWORD.ZIP 276,511 bytes
A multi-purpose word search utility for solving anagrams, word jumbles, crossword puzzles, hangman, Wheel of Fortune, 4x4 Boggle games, etc.. Includes word list (SOWPODS), highly compressed using my own algorithms (alphabetic tree, suffix reuse, Huffman). Supports search based on wildcards, phone numbers to words, and other weird features. Want to know my favorite use? In the middle of a Boggle game, claim you have to go to the bathroom, but instead run this program and print out the results. Guaranteed to annoy everyone at the table! Source code included. WIN32
GETCPU.EXE 4,608 bytes
Returns information about your CPU by dumping the results of the CPUID instruction. It also auto-detects the CPU's currently running frequency (in MHz). WIN32
GRAFTEXT.EXE 33,290 bytes Bored of 80*25, 80*43, and 80*50 text modes? This program can set your DOS text dimensions to crazy resolutions like: 128*96 or 40*12. (Warning: Doesn't work on all video cards because it sets the video mode using VESA, and then writes some VGA registers to make the video card think it's in text mode again.) DOS32
KCD.EXE 52,571 bytes This used to be called KC.EXE, but since I now use my windows version, I decided to optimize my keystrokes and rename this to KCD.EXE. This is a 32-bit text editor for DOS featuring smooth panning, support for large text files, and keys similar to DOS EDIT. DOS32
KCALC.EXE 27,354 bytes Use this program to expand mathematical expressions into sums and products that don't require parenthesis. For example: kcalc (a+b)(a-b) gives: +a*a, -b*b. DOS16
KEYTRY.EXE 18,442 bytes Press a key and this program spits out the scan code. Extended codes such as arrow keys are returned as a single byte in range: 128-255 DOS32
KGIF.EXE 37,988 bytes View an entire directory of GIF files quickly. Can select any 8-bit VESA resolution on the command line. Will use Wide DAC VGA palette if available (8 bits per color instead of the usual 6). This feature is great for 256-color grayscale. Can display larger GIF files than most other programs (including Internet Explorer) because KGIF uses memory to cache only the compressed GIF data. (Doesn't support animated GIFs yet.) DOS32
KPEG.EXE 47,350 bytes View an entire directory of JPEG files quickly. Can select any available VESA resolution and color depth (8,15,16,24,32 bits) on the command line. For old VGA cards, KPEG will display more than 256 colors by TIME DITHERING (320*200*8 mode only) By time dithering, I mean that KPEG averages the colors across 32 display pages and quickly flipping between them. (Doesn't support "progressive" JPEG yet.) DOS32
KPNG.EXE 57,601 bytes View an entire directory of PNG files quickly. This program requires support for 32-bit VESA modes. Can display larger PNG files than most other programs because KPNG uses memory to cache only the compressed PNG data. (Doesn't support 16-bit color depths.) DOS32 (32-bit color only)
MOUSRAT2.EXE 36,610 bytes Detects the rate at which your mouse reports x & y movements. Slow mouse rates can destroy the "apparent" frame rate of any application which doesn't interpolate the mouse data. If you find this number is less than the frame rate of your screen, you could try installing a mouse driver specific to your mouse and playing with the options. Also somebody out there made a neat program that runs in Windows 95/98 that can change the rate without requiring a reboot! In an internet searcher, try the keyword "PS2RATE.ZIP" DOS32
VIDSPEED.EXE 54,416 bytes Tests 8,16,32, and 64-bit memory writes to system memory, VGA memory, and linear frame buffer memory (if available). DOS32
REASPEED.EXE 54,416 bytes Tests 8,16,32, and 64-bit memory reads from system memory, VGA memory, and linear frame buffer memory (if available). DOS32
MOVSPEED.EXE 64,526 bytes Tests 8,16,32, and 64-bit memory moves from system memory to: system memory, VGA memory, and linear frame buffer memory (if available). DOS32
PKHIDE.EXE 4,921 bytes After you run "pklite -e" on an exe, run this to hide the PKLite signature. Hackers won't even know that the EXE was compressed with PKLite. DOS16
RULER.EXE 25,600 bytes Run this to help you calculate the dimensions of something on the windows screen. (One of my few Windows programs to use GDI) WIN32
7,680 bytes
11,219 bytes
Test your hearing range using this simple utility. I made sure to eliminate as many 'clicks' as possible, so you can't falsely claim you hear a frequency when you actually don't. This program plays at CD quality. For high frequencies, it will work best with headphones... of course if you have bad headphones then this programs tests your headphones more than your hearing. :) If you can hear over 17500hz, then you've got better hearing (or better headphones) than me. Older people often can't hear above 13000hz. WIN32
TEXTREND.ZIP 9,881 bytes
"Renders" a DOS font text file to a PNG file. I used to use this program when I needed to print out a DOS text file which had line-drawing characters. Source code now included. WIN32
TYPETEST.EXE 33,986 bytes Want to see how fast you can type? Using this program, you can type in any text and it will report the number of words you typed, how many seconds it took you, and how fast you typed it in words per minute. On 02/11/2000, I typed "The quick brown fox jumps over the lazy dog." in 2.683 seconds - that's 201.233 words per minute! On 06/28/1999, I typed the names of all 50 U.S. states in alphabetical order (60 words, no capitalization) in 45.094 seconds. I challenge you to beat me! Don't be discouraged though - I'm really, REALLY FAST! You should be proud of yourself if you can get half my score. DOS32
VES2.ZIP 33,856 bytes
Tests the features of 8-bit VESA graphic modes. Source code included. Compile with Watcom C. DOS32
VBEAF.EXE 65,270 bytes Tests the speed of VBE/AF graphic modes. Too bad that the VBE/AF specification seems to not have caught on. To obtain a VBE/AF driver, you can try installing Scitech Display Doctor (, which puts a file called VBEAF.DRV in the root of your hard drive. DOS32
KPC.ZIP 35,357 bytes
Plays WAV or VOC files through the PC speaker. Works in Windows 95/98, but not quite at the same quality as DOS because Windows has no GOOD way of disabling interrupts. Includes source; compile with Watcom C. DOS32
MP3.EXE 73,483 bytes Just another MP3 player. Code is based on MPG12304.ZIP, but I optimized the player quite a bit and has a couple of silly features like an alarm. Features low CPU usage. Requires an SB-compatible card. DOS32
MP3PC.EXE 70,021 bytes Got no sound card? MP3PC plays MP3 files through your PC speaker! For some reason I like to make programs work through the PC speaker. Some people still don't know that it's possible to play real sounds through it. Unfortunately, you must run this in pure DOS mode for it to work. DOS32
NCD.EXE 5,592 bytes KeN's Change Directory. If you like jumping to different directories quickly, you should try my version of the program, based on one of my favorite Norton Utilities. My NCD program is extremely small and fast. One cool feature is that it stores the entire directory tree (skips hidden directories) in the "NCD.EXE" program file itself. This keeps your HD from getting cluttered and makes the program load even faster. DOS16
TEXTCAPT.EXE 5,397 bytes Use to capture a DOS text screen of any dimensions to a file (called TEXTCAPT.TXT) Handy when a program refuses to redirect output to a file with the '>' DOS operator. DOS16
NV.ZIP 126 bytes Set to 80*25 text mode, clear the screen, and fix the IRQ0 timer rate, all in 16 bytes. Use this instead of typing "MODE CO80,25" and "CLS" when your screen gets messed up when DOS programs crash. DOS16
FLOPPY.ZIP 134 bytes This utility is for the serious QuickBasic programmer who is stuck using WinXP. In WinXP, some old DOS programs (such as Microsoft QuickBasic) stupidly access the floppy drive when you do File..Open. This is really annoying because it wastes 2 seconds while it does this. FLOPPY.COM fixes this behavior by disabling the floppy drive. As a side effect, you can't access the floppy drive until you re-enable it. At the command prompt, type "floppy off" to disable the floppy drive and "floppy on" or "floppy" to enable the floppy drive. DOS16 (intended to run on WinXP)
DOS4GW.EXE 265,396 bytes Ok, obviously this isn't mine. It's the default DOS extender that Watcom C uses. I put it here just in case you need it to run one of my programs. DOS32
Back to Ken Silverman's Official Home Page