Parallel Port Tester

After playing around with a ton of parallel port cards in an attempt to figure out Willem programmer compatibility, I decided it would be useful to write a parallel port tester program. Just a simple utility where you can set the output value of each output pin and read the value of each input pin. Several other test programs exist, but I wasn’t happy with their interfaces, and a lot of them weren’t prepared to easily handle PCI/PCI Express/ExpressCard parallel ports. At worst, they only supported the standard parallel port I/O addresses that new motherboards don’t have anymore. At best, they supported custom parallel ports but required you to manually look up the I/O address range of the card.

Oh, and a lot of the existing tools don’t work with newer versions of Windows. I wanted a tool compatible with newer versions of Windows, both 32-bit and 64-bit.

Introducing Parallel Port Tester:


Simply locate your parallel port in the list that appears in the bottom right. I use several methods to discover parallel ports and their I/O ranges, so you shouldn’t need to enter them manually. If for some reason your port doesn’t show up in the list, you can manually enter the base address of your parallel port (e.g. 0x3000) and hit Enter.

You can toggle parallel port outputs on or off by clicking on the circle representing the pin you want to change. Green represents on (high), black represents off (low). The circles representing input pins are automatically updated while you have the port selected, so you can easily test your inputs. You can also choose whether to use the four control pins as inputs or outputs.

For people who are really interested, I also display the raw register values of the three standard parallel port registers. I show separate values for the control register because what you write to the control register is not guaranteed to be what you read back.


Let’s get the requirements out of the way. You will need:

  • Windows 2000 or newer. Should work with 2000, XP, Vista, 7, 8, and the various newer server versions. 32- or 64-bit Windows are both supported.
  • Microsoft .NET Framework 2.0 or newer
  • Inpout32.dll

Note that I am linking to the best version of Inpout32.dll. It should be compatible with all versions of Windows supported by my program. If you are using Windows Vista or newer, you will need to run the InstallDriver.exe program inside the Win32 directory of Inpout32’s distribution in order to install the driver. You only have to do this once, and it’s just so you can get administrator privileges in order to install the driver. Even if you are on a 64-bit operating system, that’s OK. Still run InstallDriver.exe from the Win32 directory.

Put Inpout32.dll from the Win32 directory into the same directory as ParallelPortTester.exe. Don’t use the x64 directory; that DLL would only be for a 64-bit program, but Parallel Port Tester is not a 64-bit program.


OK, so you’re ready to download it? Here you go. Make sure you also get Inpout32.dll and install it as described above, because it’s not included with my program.


Download Parallel Port Tester version

Version History

  • 1.0: Initial release
  • Improves parallel port detection algorithm; previous algorithm was incorrect in certain cases.
  • Fixes a bug that was causing a crash for some users.

Any problems/questions/concerns? Please let me know in the comments below and I’ll try my best to help get you going. Be careful; it might be possible to fry your parallel port if you hook the outputs up wrong. I’m not responsible for any damage done to your computer by using this software.

For sample code that describes how I detect the computer’s parallel ports in Parallel Port Tester, see my blog post: Detecting parallel ports and their I/O addresses in Windows.



  1. Dick Grubb @ 2014-03-08 11:25

    Hi Doug,

    I have been trying to equip my Win 7 64 PC to run some old Analog Devices software that wants to communicate with an eval card via a parallel port. I installed a Rosewill RC303 PP PCI card which seems to function Ok, but it puts the port address up at 0xD030. Your Parallel Port Tester finds it and I can toggle all the pins. Thanks for a great piece of software. However the AD softwate does not seem to be able to deal with the non standard port address. I installed Windows Virtual Machine and their XP OS for it. Under XP running virtual the port appears at 378h according to the Device Manager but the AD software still does not find the port.

    I tried to install your test software in the XP OS running virtual to see what was happening, but I have been unable to get it to load. It throws an error “unable to initialize”. I am using the recommended version of inpout32.dll. Do you know of anybody else’s experience of running your software in the virtualized XP OS?

    Sorry for the long winded question. Thanks,

    Dick Grubb

  2. Hi Dick,

    Yeah–the nonstandard port addresses always throw a curveball with older programs 🙁 Good idea on making an XP virtual machine, as long as the VM software you’re using supports forwarding parallel port access. I believe I’ve tried the software in a Windows 8 VM (with VMware Player) in the past and it worked. I am pretty sure I’ve also tested it on a real Windows XP computer. It does require .NET. Have you installed .NET framework 2.0 or newer? I don’t believe XP came with it by default. If that doesn’t work, you might want to consider trying VMware Player.

  3. Hi Doug,

    Would it be possible for me to take a look at your source code for this project? I downloaded your program and it works great with my card and relay board. I’m writing a simple program in c# to do the same thing. However when I run my program the led on the relay lights up then shuts off again. It should just stay lit. Any help would be great!


  4. Hi,
    I’ve been trying to run the program on Win7 64bit, after installing Inpout.dll as mentioned. When I run it, I only get the “ParallelPortTester has stopped working. Windows is checking for a solution” error. Any idea what could cause that?

  5. Hi Nitzan,

    Unfortunately I’ve never seen that problem before. I’m not exactly sure what would be causing it to happen. I’ve seen that happen in the past if I run a .NET program on a computer without .NET installed, but Windows 7 would come with .NET installed already. I could try to build some other binaries for you to help find exactly where it’s crashing, but I won’t be able to get around to that until next week if you’re interested.

  6. Hi Doug, your program is amazing and works fine. I’m trying to achieve parallel port detection in my program and I was wondering if you could share your experience about this.

    Thanks a lot.



  7. Hi Arc,

    I’ve gotten several requests and just haven’t had time to fully describe the detection until now. I just wrote a new blog post about how to detect parallel ports. It describes the algorithm I use in Parallel Port Tester. I hope this helps!

  8. Hi Doug, thansk for your fast answer. I finally managed to do it through WMI yesterday. I just missed replacing the two backslashes.

    Your post is very helpful though and much more optimized than mine.

    Fantastic job Doug!

  9. Chris Dancer @ 2014-12-10 09:55

    Hi Doug,
    I tried to run the program on my Win XP 32-bit machine but get the error parallel port tester has encountered an error and needs to close. I have put the recommended 32-bit InpOut32.dll in the program directory.
    Any ideas?

  10. hi Doug,

    thanks for this great piece of software, it works perfectly on windows 8.1! Unfortunately i tried to run your program on a virtual machine using vmware with windows XP sp3 and it doesnt work yet, it crashes with a standard ms message: “ParallelPortTester has encountered a problem and needs to close. We are sorry for the inconvenience.” Net Framework was successfully installed on this vm, any hint?

    thanks in advance


  11. Hi Chris and Simone,

    I am able to reproduce this problem in my VMware virtual machine running XP. I’ll see what I can do to fix it. I’m not sure exactly what’s causing it.

  12. Hi again,

    I found the problem. It’s actually fairly embarrassing — there was some debugging code in earlier versions of the program that I accidentally left in. For some reason, the thing I was trying to debug seems to be nonexistent in at least some installs of XP (I swear, this program was working fine on my other computer with XP). I simply removed the unnecessary debugging code, and now everything is working fine in my VMware install.

    I have updated this post with version which should fix the problem. Hopefully, it will fix the crashing bug for you too!

  13. hi Doug,

    it works! 😀 perfectly, it seems like my parallel port is working on XP too 😀

    thank you very much!

    mmm.. do u have a paypal account for donations? 😀 i owe you a beer

  14. Doug

    I think your test program is what I am looking for to directly write to the lpt port in windows 8.1 . I am wondering if your program has any “arguments” or “switches” so it can be launched with a shortcut or batch file and have outputs change state. For example if i have a relay attached to an output pin of the lpt port and i want to control it with a batch (cmd) file is there a way to use the port tester or will it only work manually?

  15. Unfortunately it does not have any switches for running automatically from a batch file. I’d recommend writing a small program that uses a library like Inpout32.dll to do it.

  16. Hi,

    would you have any idea why all input pins of the parallel port (including the 4 control pins) stay green irrespective of the input given?
    I have a 64bit windows 7, tried already 2 parallel port pc cards using different slots on the mainboard and different drivers – but the ttl pulse on the acknowledge pin 10 remains invisible for the pc…
    Also 4.5 Volt DC current stimulation (series connection of batteries, one wire into a female connector for ground, other wire into a female connector for an input pin) yields no change from green to black, on none of the female connectors, i.e. for no input pin…
    Have you ever seen something like that? What do i miss?

    Thanx for any idea,

  17. Have you tried directly connecting an input pin to ground to make it go black? If the input pins don’t go black when you ground them, I’m not sure what would cause that…

    Have you verified the cards are set up to work in SPP (standard parallel port) mode? Other modes might not work the same way.

  18. Hi,

    the trick was to activate the cards plug-and-play mode in the windows device manager – even though it was correctly installed and shown as functional, it didn’t work properly before chosing legacy plug-and-play mode…

    Thank you so much for your help!!!

    PS: I already recommended your software to four IT guys with whom i discussed the problem and all of them really liked it! 🙂

Add your comment now