You have an OPC UA server on a PLC, and you need to confirm it exposes what the vendor promised. So you need a client.
The good OPC UA clients are free. That is not the hard part. The hard part is that your first connection almost always fails — and not for a reason any tool comparison mentions.
This guide covers the six clients worth installing, and the certificate problem that stops most people before they read a single value.
An OPC UA client connects to an OPC UA server and interacts with its data: browsing the address space, reading and writing node values, calling methods, and subscribing to value changes. The protocol is defined in IEC 62541.
Table of Contents
What Actually Blocks You: The Certificate Handshake
OPC UA is not Modbus. Entering an IP address and a port is not enough. The protocol requires mutual X.509 certificate authentication as soon as you leave the no-security mode.
Here is what happens on a first attempt:
- The client requests the endpoint list from the server
- The client receives the server certificate and refuses to trust it
- You accept the server certificate on the client side
- The client sends its own certificate — and the server rejects it
- The client certificate lands in a
rejectedfolder on the server - You have to move it manually into the
trustedfolder
Step 6 is the one nobody documents. Until you do it, you loop.
The standard file-based certificate store uses four folders: own for your own certificate and private key, trusted for certificates you accept, issuers for intermediate CAs, and rejected for everything that failed. Both ends have their own store. A connection needs each side to trust the other.
Error Codes and What They Really Mean
| Status code | Real cause | Fix |
|---|---|---|
BadCertificateUntrusted | Certificate is not in the trust store | Move it from rejected to trusted — on both ends |
BadCertificateHostNameInvalid | You connected by IP, the certificate holds a hostname | Use the exact hostname, or regenerate the certificate |
BadSecurityChecksFailed | Security policy not supported by one side | Check the endpoint list before choosing |
BadIdentityTokenRejected | Wrong user credentials, or anonymous access refused | Check which authentication modes the server accepts |
BadTcpEndpointUrlInvalid | Malformed URL | Use opc.tcp://host:4840 |
BadTimeout | Port filtered, or server unreachable | Check the firewall on 4840 |
The Method That Works
Always start with SecurityPolicy: None and MessageSecurityMode: None. If that connects, the network path and the server are fine. You have eliminated the firewall, the address, and the port in one step.
Only then move up to Basic256Sha256 or Aes256_Sha256_RsaPss and deal with certificates. Many servers disable no-security mode in production, but during commissioning it is almost always available — and it is your best diagnostic tool.
One trap worth knowing: Basic128Rsa15 and Basic256 are deprecated in the specification. Some older servers offer only those, and some newer clients refuse to connect to them. If you see no compatible endpoint at all, that is usually why.
Comparison Table
| Client | Interface | Platform | License | Strength |
|---|---|---|---|---|
| UaExpert | GUI | Windows, Linux | Freeware, registration | Industry reference, plugin-based |
| Prosys OPC UA Client | GUI | Windows, Linux, macOS | Freeware | Best connection diagnostics |
| Softing OPC UA Demo Client | GUI | Windows | Freeware | Lightweight, fast sanity check |
| opcua-client-gui (FreeOpcUa) | GUI | Cross-platform | GPL-3.0 | Open source, Python ecosystem |
| opcua-commander | Terminal | Cross-platform | MIT | Works over SSH, no GUI needed |
| Matrikon OPC UA Explorer | GUI | Windows | Freeware | Useful alongside OPC Classic |
The GUI Clients
UaExpert
UaExpert is the reference tool. If you install only one client, install this one.
It browses the address space, reads and writes node values, calls methods, manages subscriptions, and covers the Data Access, Alarms & Conditions, and Historical Access service sets. Plugins add XML NodeSet export, performance testing, and data logging.
The interface is built on Qt and split into panes: project, address space, attributes, references, and a central area for specialized views such as DataAccess, Alarms, and Historical Trend.
Two practical notes. Registration is required to download, but it is free with no functional limits. And the certificate store sits in the application configuration folder — that is where you go to find the client certificate the server needs to trust.
Vendor documentation from Siemens and ABB routinely names UaExpert as the tool to validate an OPC UA server, which makes it the de facto interoperability reference.
Prosys OPC UA Client
Prosys OPC UA Client discovers servers, lists endpoints, lets you pick the security policy and message mode, then browses the address space. It reads and writes values on demand or cyclically, configures subscriptions, calls server methods, and reads historical data when the server provides it.
What sets it apart is its logging and diagnostic views. When a connection fails, it tells you why in usable terms, where other clients return a raw status code. For troubleshooting between an OT device and a SCADA system or historian, that is where it saves the most time.
Prosys also ships a free Simulation Server, covered further down. Together they make a complete test bench with no hardware at all.
Softing OPC UA Demo Client
Softing OPC UA Demo Client is a free demonstration client for validating a connection and browsing an address space.
It is lighter than UaExpert and less complete. Keep it for a quick sanity check, or as a second opinion when one client refuses a connection another accepts — implementations do not react identically to a badly configured server, and comparing two of them narrows the problem fast.
opcua-client-gui
opcua-client-gui is a PyQt graphical client from the FreeOpcUa project, built on the Python library. It handles browsing, subscriptions, and variable writes.
Its value is not the interface, which is rougher than UaExpert. Its value is that you are already inside the Python ecosystem: when manual testing stops being enough, you move to a script using the same library, with nothing new to learn.
License is GPL-3.0 for the GUI tools and LGPL-3.0 for the core libraries. That distinction matters if you ship code inside a product delivered to a customer.
opcua-commander
opcua-commander is a terminal-based client built on node-opcua, under the MIT license.
The use case is narrow and badly underrated: you are on an SSH session into a Linux gateway inside a cabinet, with no graphical desktop, and you need to confirm an OPC UA server is answering. No GUI client helps you there. This one runs in the terminal.
On a remote site, that can save a trip.
Matrikon OPC UA Explorer
Matrikon OPC UA Explorer is a free test client for OPC UA servers, from Honeywell.
Do not confuse it with Matrikon OPC Explorer, which is an OPC Classic tool — DA, HDA, and A&E over COM/DCOM — and does not speak OPC UA at all. The two products carry nearly identical names and come from the same vendor. The mix-up is extremely common, including in tool roundups.
If your plant mixes OPC Classic and OPC UA, having both tools from one vendor keeps things simple.
Free SDKs for Developers
When manual testing stops being enough, you write code. Four free, serious stacks:
| SDK | Language | License | Note |
|---|---|---|---|
| open62541 | C | MPL 2.0 | Very light, targets embedded |
| Eclipse Milo | Java | EPL | Client and server, Eclipse ecosystem |
| opcua-asyncio | Python | LGPL | Successor to python-opcua, async |
| node-opcua | JavaScript | MIT | Basis for opcua-commander |
One thing to watch: python-opcua is deprecated. Plenty of tutorials still reference it. Use opcua-asyncio for anything new.
MPL 2.0 and MIT are the most permissive of the four for commercial products. LGPL and EPL need more attention before you build a product on them.
Testing Without Hardware
You do not always have a PLC in front of you. Three free OPC UA servers for working dry:
Prosys OPC UA Simulation Server — free, exposes a full address space with values that move. The quickest to get running.
open62541 demo server — included in the project examples. Good for testing an embedded stack.
opcua-asyncio — a few lines of Python expose a server with your own nodes. Useful when you want to reproduce the exact structure of a real device.
This is also the right way to practice with certificates. You break and repair the security configuration as many times as you need, without touching a live installation.
What to Check Before You Choose
| Capability | Why it matters |
|---|---|
| Endpoint discovery | See what the server actually offers before attempting a connection |
| Certificate store access | Without reachable trusted and rejected folders, you are stuck |
| Subscriptions | See value changes, not just on-demand reads |
| Method calls | Needed to test a complete information model |
| Historical access | If the server exposes a historian |
| NodeSet XML export | To document or reproduce an address space |
| Authentication modes | Anonymous, username and password, or user certificate |
The first three are non-negotiable. The rest depends on your work.
What Free Clients Do Not Do
No industrial data collection. A test client is not a data server. Feeding a historian or a SCADA system continuously needs a gateway or a platform.
No advanced scripting in the GUI clients. Replaying a test sequence means dropping to an SDK.
No support. Nobody to call when a connection refuses to establish the night before a commissioning.
No certificate fleet management. On an installation with twenty OPC UA servers, managing trust stores by hand becomes unworkable. That is the problem commercial certificate management infrastructure solves, and it is a real one rather than a sales argument.
For testing, troubleshooting, learning, and development, free is enough. Engineers who work in OPC UA daily generally keep UaExpert and one SDK, and nothing else.
Frequently Asked Questions
What is the best free OPC UA client?
UaExpert for general use. Prosys OPC UA Client if connection diagnostics are your priority. opcua-commander if you work over SSH with no graphical desktop.
Why does my OPC UA connection fail on the first try?
Almost always the certificate. The server rejects the client certificate and drops it in a rejected folder. You have to move it to trusted on the server side. Test in None security mode first to isolate the problem.
What port does OPC UA use?
4840 by default, over TCP, with URLs in the form opc.tcp://host:4840. Many devices use a different port, so check the vendor documentation.
Is UaExpert really free?
Yes. Registration on the Unified Automation site is required to download, but there is no license to buy and no functional limitation.
Can I test OPC UA without a PLC?
Yes. Prosys OPC UA Simulation Server, the open62541 demo server, or a few lines with opcua-asyncio will give you a test server.
What is the difference between an OPC UA client and an OPC Classic client?
OPC Classic — DA, HDA, A&E — runs on COM/DCOM and works only between Windows machines. OPC UA is platform-independent, encrypted, and runs over TCP. The tools are not interchangeable, despite some product names being almost identical.
Which security policy should I use?
Basic256Sha256 as a minimum, Aes256_Sha256_RsaPss if the server offers it. Basic128Rsa15 and Basic256 are deprecated and should not be used in production.
Do I need a certificate for every client machine?
Yes. Each client instance generates its own certificate, and each one has to be trusted by the server. Reinstalling a client on a new laptop means repeating the trust step.
