IEC 61850 SCL File Viewer — Open SCD, CID, ICD and IID Files Online

By | August 18, 2026

Drop an SCD, CID, ICD, IID, SSD or SED file on the box above. The viewer reads it in your browser and lays out what is inside: the IEDs, the logical devices, every GOOSE and sampled value publisher with its MAC address and APPID, who subscribes to what, and the data sets behind each control block.

The file never leaves your machine. There is no upload, no server, no copy kept anywhere. Close the tab and it is gone. That matters, because an SCD is a map of a live substation.

The file is read by your browser. Nothing is uploaded, nothing leaves this device.

Or paste the XML instead



Load an SCL file to see the header, IED structure, communication addresses, GOOSE and sampled value publishers, subscriptions and a consistency check.

Work out which file you are holding

The extension tells you what stage of the engineering the file came from. IEC 61850-6 defines six of them, and mixing them up wastes a lot of time on site.

ExtensionNameWhat it holdsWho produces it
.ssdSystem specification descriptionSingle line, voltage levels, bays, logical nodes bound to primary equipment. No IEDsSpecification tool, at design stage
.icdIED capability descriptionOne IED template, everything the device can do, no project addressesDevice vendor
.iidInstantiated IED descriptionOne IED as configured by its own vendor tool, ready to go back into the system toolIED configurator
.scdSubstation configuration descriptionThe whole station: every IED, the Communication section, subscriptionsSystem configurator
.cidConfigured IED descriptionOne IED as it will be loaded, with its addresses and its subscriptionsSystem configurator
.sedSystem exchange descriptionA slice of one project handed to another project, for interfaces between themSystem configurator

The viewer does not trust the extension. It looks at the content and tells you what it found: how many IEDs, whether a Substation section exists, whether the Communication section carries addresses. A .cid exported from some tools turns out to be a full station file with one IED name changed, and that shows up immediately.

The six views

Overview gives you the header first. The id, version and revision in <Header> are the only place the file states which revision it is, and the History items tell you who touched it last and why. If the version has not moved since 2019 and the bay was extended last month, you already know something.

IEDs opens the tree: IED, access point, logical device, logical nodes. Each logical device lists its data sets, its report control blocks, its GOOSE and SV blocks, and its bound inputs.

Communication is the address book. IP, subnet and gateway per access point, then the multicast parameters for every control block.

GOOSE and SV is one flat table across the whole file. This is the view most people came for.

Subscriptions resolves every ExtRef back to the control block it came from, so you get publisher to subscriber in one place.

Data sets expands each data set to its FCDA members, in order.

Reading the GOOSE table

Each row is one publisher. The columns are the things that decide whether the message actually arrives and gets accepted.

MAC and APPID come from the Communication section, not from the IED section. Two publishers on the same APPID is a hard fault: the subscriber filters on APPID before it looks at anything else, so it will accept frames from the wrong device and drop into the wrong state. The viewer flags it as an error.

confRev is the number the subscriber compares against its own copy. If someone adds a member to the data set and leaves confRev alone, subscribers keep accepting a message whose contents no longer match what they expect. Raise it every time the data set changes.

Items is the number of FCDA entries in the referenced data set. A long data set is not free. Any single member changing re-sends the whole message, so a 60-entry data set carrying both trip signals and cyclic measurements will flood the bus every time a measurement moves.

MinTime and MaxTime are the retransmission times in milliseconds. MinTime is the gap after an event before the first repeat, typically 4 ms. MaxTime is the stable-state heartbeat, typically 1000 to 5000 ms. The subscriber’s time allowed to live comes from MaxTime, so a long MaxTime means a slow detection of a dead publisher.

Subs counts how many inputs in the file bind to that block. Zero on a trip GOOSE means either a spare block or a missing binding, and it is worth knowing which before the commissioning test.

One point that trips people up: the appID attribute on <GSEControl> and the APPID in the Communication section are two different things. The attribute is a text identifier that ends up as GoID in the message. The Communication APPID is the 16-bit Ethernet application identifier the subscriber filters on. The viewer shows both, in separate columns.

The subscription cross-reference

Edition 2 puts subscriptions in the file. Every <ExtRef> inside an <Inputs> element says which IED, which logical device, which data attribute, and — when the tool wrote it — which source control block.

The cross-reference reads them all and groups them by publisher. You get a list like this:

PROT_Q01/LD0/gcbTrip
  CTRL_Q01  LD0  LLN0  TRIP_IN   LD0/PTOC1.Op.general      GOOSE
  CTRL_Q01  LD0  LLN0  CB_POS    LD0/XCBR1.Pos.stVal       GOOSE

That is the answer to “what breaks if I take this relay out”, and it is faster than searching the XML by hand.

Inputs with no srcCBName are listed separately. They are legal — the binding is at data level and the tool resolves the control block itself — but they are also where silent mistakes hide, because nothing in the file states which stream carries the signal.

What the checks tab looks for

The checks are the ones that cost time on site. They are grouped by how much trouble they cause.

CheckLevelWhat it means in the field
Duplicate APPIDErrorTwo streams a subscriber cannot tell apart
Duplicate multicast MACErrorSame destination address on two publishers
Duplicate IP or IED nameErrorAmbiguous references through the whole file
Control block with no addressErrorThe block exists in the IED but has no Communication entry, so it never gets on the wire
Data set not foundErrordatSet points at a name that is not defined in that logical device
Subscription to an unknown IED or control blockErrorA binding left behind after a rename
APPID outside the reserved bandWarning0x0000 to 0x3FFF is GOOSE, 0x4000 to 0x7FFF is sampled values
MAC outside the reserved blockWarning01-0C-CD-01 for GOOSE, 01-0C-CD-04 for sampled values
confRev zero or missingWarningSubscribers cannot detect a data set change
Empty data setWarningThe block publishes nothing
Address without a control blockWarningLeft over from a deleted block
Internal address bound twiceWarningTwo external signals landing on the same internal point
No DataTypeTemplatesWarningMost tools will not import the file as configured
GOOSE with no subscriberNoteSpare block, or a binding never made
Missing VLAN priority or retransmission timesNoteThe publisher falls back to its own defaults

These are consistency checks against the content of one file. They are not a schema validation. A file can pass every check here and still fail an XSD validation against the 61850-6 schema, and it can fail a check here while being perfectly valid XML. Use both.

Limits worth knowing

Tables stop at 400 rows and tell you when they do. A station SCD with 40 IEDs can carry thousands of FCDA entries, and rendering all of them would lock the page. The filter box narrows any view by IED name, control block name or signal path.

Private-namespace elements are ignored. Vendor tools put engineering data in their own namespaces, and none of it is read here.

The viewer is read only. It does not write, repair or convert anything. If you need to change a binding, that belongs in the system configurator, and the SCD it produces is the file that goes back into the relays.

FAQ

Is my file uploaded anywhere? No. The file is read with the browser’s own file reader and parsed in the page. There is no network request. You can check it yourself: open the developer tools, go to the network tab, and load a file.

Can I open a file straight from a relay? Yes, if you can export it. Most vendor tools export a .cid or .iid per device. Those open the same way as a station file, just with one IED in them.

Why does my CID show no subscriptions? Some tools strip the Inputs elements when they export a configured IED, on the grounds that the device only needs to know what to publish and what to listen for at data level. If the subscriptions matter to you, look at the SCD instead.

What is the difference between the appID attribute and the APPID in the address? The appID on the GSEControl element is a text identifier that becomes the GoID in the published message. The APPID under the GSE address is the 16-bit value in the Ethernet frame that subscribers filter on. Different fields, different purposes, similar names.

Does it check the data types? No. It counts the entries in DataTypeTemplates and warns when the section is missing, but it does not walk every DO and DA to confirm each FCDA resolves to a real attribute.

Can I use this to compare two versions of an SCD? Not directly. Load each one, download the summary text file, and run a diff on the two. The summary lists publishers, subscriptions and findings in a stable order, which makes the diff readable.

Does it read Edition 1 files? Yes. Anything with an <SCL> root parses. Edition 1 files have no Inputs elements, so the subscription view will be empty, and that is expected rather than a fault.

My browser struggles with a very large file. Everything is parsed into memory at once. A file over roughly 50 MB will be slow on a laptop and may fail on a phone. Split the station file, or use a desktop tool for the very large ones.

Author: Zakaria El Intissar

I've spent 13 years in power system automation, electrical protection, and SCADA communication, as an automation and industrial computing engineer. ScadaProtocols.com is where I turn what I've learned on site into plain guides and working tools — so other engineers can decode, analyze, and troubleshoot industrial communication protocols without the guesswork.