PLC Simulator
Pillar page

PLC Programming Online Simulator — Free in Your Browser

Write ladder logic or Structured Text, press Run, and watch a simulated machine respond. Auto-graded IEC 61131-3, Allen-Bradley, and Siemens practice — no download, hardware, or licence key.

How the browser-based PLC programming simulator runs ladder logic with no installA web browser window running a PLC ladder logic simulator with an input/output strip, requiring no installation or download.plcsimulator.app/playno installINPUTSOUTPUTS
Your code, a simulated scan loop, and a live IO table — all in a browser tab, no download or license key.
Real plc programming simulator footage

See this exact skill in the working simulator.

Watch the real browser product respond to the task on this page, then try the same practical workflow yourself. No slides, concept mockups, install, or credit card.

Try this in the browser
PLC Programming Simulator — Ladder Logic to Live Machine
What it is

A PLC programming simulator built for the browser.

A PLC programming simulator lets you write controller code and test it against a virtual plant — sensors, motors, valves, conveyors — without owning hardware. Traditionally these tools have been Windows-only, license-gated, and married to one vendor. Siemens\u2019 PLCSIM ships with TIA Portal. Rockwell\u2019s Studio 5000 Logix Emulate targets Studio 5000. LogixPro is a commercial teaching product. CoDeSys ships a simulator with its IDE. Each one requires install, each one locks you to a single instruction set, and most require a paid license to do anything meaningful.

Our PLC programming software removes all of that friction. It runs entirely in the browser, executes IEC, Allen-Bradley and Siemens-style logic in one editor, and teaches 9 dialects through guided tracks. It grades programs against scripted tests. Try the first real program without an account at /try.

The intended audience is anyone who needs ladder-logic practice without hardware: PLC students working through a first course, mechatronics and controls-engineering students prepping for interviews, plant engineers verifying logic changes offline before commissioning, and self-taught hobbyists. Every scenario is designed to be completable in 15–45 minutes so you get many reps per sitting.

What PLC programming practice looks like

Follow the program from rung to real machine behavior

A useful simulator must show more than a code editor. These six views connect the instructions a learner writes to the scan cycle, field I/O, motor control, process response and the evidence used to grade a solution.

Controls technician running ladder logic in a browser-based PLC programming simulator beside a conveyor training cell
01Write the control logic, watch live I/O and compare the program state with the physical machine response in one workspace.
Three-wire motor start-stop circuit with overload, contactor, seal-in contact and ladder logic rung
02A seal-in branch keeps the contactor commanded after the momentary Start button is released; Stop or overload breaks the path.
PLC scan signal path from proximity sensor through input module and ladder rung to output module and motor
03The simulator repeats the same control loop as a PLC: sample inputs, solve the program and update outputs.
PLC-controlled conveyor sorter with photoelectric sensor, input module, pneumatic diverter and live signal path
04Machine scenarios connect abstract addresses to observable sensors and actuators, so a passing rung must also produce the intended motion.
PLC tank level and PID programming lab with transmitter, control valve, pump and live process trend
05Advanced scenarios add analog scaling and process dynamics, letting learners compare the measured value, controller output and resulting level.
PLC programming skills assessment with automated test results, ladder logic and a working conveyor cell
06Auto-graded tests turn a successful machine cycle into repeatable evidence across normal, boundary and recovery cases.
How it works

From code to machine in three steps.

Every scenario follows the same loop: write logic, press Run, and watch the simulated IO table update as your program executes through each scan cycle.

1

Pick a scenario

140 published practice scenarios are indexed at /scenarios. Each ships with an IO list, a scripted test suite, and a written objective. Start with the free Traffic Light or Motor Start/Stop scenarios to see the flow.

2

Write ladder logic

The Monaco-based editor accepts IEC 61131-3, Allen-Bradley, or Siemens syntax. Switch dialect from the toolbar. Contacts, coils, timers, counters, edges, and PID function blocks are all wired up.

3

Run and grade

Press Run and your program drives a Phaser-rendered physics scene. Test cases evaluate every objective (correct sequencing, interlocks, timing windows) with pass/fail feedback and failure reasons.

The three-phase PLC scan cycle the programming simulator runs each cycleThe repeating PLC scan cycle: read inputs, execute the ladder logic, update outputs, then housekeeping, looping continuously.1Read Inputs2Execute Logic3Update Outputs4HousekeepingSCANCYCLE
Inputs → solve every rung top-to-bottom → outputs, on a repeating clock. The simulator runs this real scan loop so timers and counters behave like hardware.

Start in 30 seconds

There is nothing to download and no trial clock. Open /try, drop a few contacts and coils onto a rung, press Run, and read the pass/fail result. No account is needed for the guided first program, so you can write working ladder logic before you decide whether to sign up.

Languages & instructions

What you can write in the simulator.

The editor speaks the two IEC 61131-3 languages most people actually use to learn: ladder diagram (LD) and Structured Text (ST). You build rungs from the standard instruction set — contacts, coils, timers, counters, edges, compares, and math — and the simulator executes them against a live IO table.

Ladder logic, rung by rung

Ladder is the default. A rung reads left-to-right: examine-if-closed and examine-if-open contacts in series form an AND, parallel branches form an OR, and the coil on the right energises when the path is true. The simulator solves each rung in order, every scan, so the logic you draw is the logic that runs.

Ladder logic programming simulator →
A ladder logic rung — series contacts and a coil — running in the PLC programming simulatorA basic ladder logic rung between two power rails: an examine-if-closed contact (XIC) in series driving an output coil (OTE).L1L2] [StartXIC I:0/0LampOTE O:0/0
Series contacts AND together; the coil energises when the rung path is true.
Ladder logic contact and coil symbols you program in the PLC simulatorThe core ladder logic symbols side by side: XIC examine-if-closed, XIO examine-if-open, OTE output energize, OTL output latch and OTU output unlatch.XICIfXIOIfOTEEnergizeLOTLLatchUOTUUnlatch
Normally-open / normally-closed contacts, output, latch and unlatch coils — the core symbol set.

The instruction set

Beyond contacts and coils you get the full beginner-to-intermediate toolkit: on/off-delay and pulse timers, up/down counters, rising- and falling-edge detection, comparison and math blocks, and latch/unlatch for retentive state. Each instruction maps cleanly onto its Allen-Bradley and Siemens equivalent when you switch dialect.

Programming a seal-in motor-start rung in the PLC programming simulatorA seal-in latch rung: a Start contact in parallel with a Hold contact, in series with a normally-closed Stop contact, driving an output coil.StartHold (seal)StopMotor
Seal-in (latching) start/stop — the first real rung most learners build.
An on-delay (TON) timer running in the PLC programming simulatorA TON on-delay timer: the accumulated time bar ramps up toward the preset value, and the done (DN) bit turns on when the accumulator reaches preset.TONPRE 5000ACCACC ramps to PREPREDNdone bit
TON / TOF / TP timers behave to the IEC 61131-3 spec against the scan clock.
An up-counter (CTU) running in the PLC programming simulatorA CTU count-up counter: each input pulse increments the accumulator toward the preset, and the done (DN) bit turns on when count reaches preset.count pulsesCTUPRE 5ACC 3ACCcount toward presetDNdone bit
CTU / CTD / CTUD counters with live accumulator and preset you can watch.
Dialects

Three PLC dialects, one editor.

The compiler pipeline normalises each dialect into a common IR before execution, so your program runs against the same scan loop and the same test harness regardless of which syntax you wrote it in.

IEC 61131-3

The international standard. Structured Text + ladder with portable tag declarations (VAR ... END_VAR) and standard function blocks (TON, CTU, R_TRIG).

Ladder logic simulator →

Allen-Bradley

RSLogix-style XIC / XIO / OTE / OTL / OTU with AB tag notation (I:0/0, O:0/0, B3:0/0, T4:0, C5:0).

Allen-Bradley PLC simulator →

Siemens

TIA Portal / STEP 7-style STL networks with A / AN / O / ON / = / S / R and Siemens IO notation (%I0.0, %Q0.0).

Siemens PLC simulator →
The IEC 61131-3 programming languages supported by the PLC programming simulatorThe five IEC 61131-3 PLC programming languages as chips: Ladder Diagram, Function Block Diagram, Structured Text, Instruction List and Sequential Function Chart.IEC 61131-3 — five languagesLDLadder DiagramFBDFunction BlockSTStructured TextILInstruction ListSFCSequential Func. Chart
IEC 61131-3 defines the languages — the simulator focuses on the two you learn first: ladder diagram and Structured Text.
Writing Structured Text in the PLC programming simulator and exporting it to a real controllerA small Structured Text code block in an editor: an IF/THEN condition, a TON timer call and assignments, showing text-based PLC programming.main.st — Structured Text1IF Start AND NOT Stop THEN2 Run := TRUE;3END_IF;4DelayTmr(IN := Run, PT := T#5s);5Lamp := DelayTmr.Q;
Structured Text is portable today — write it here, then copy it into Codesys, OpenPLC, or any ST-compatible IDE.
Why browser-based

Why browser-based PLC programming matters.

Most PLC software was built for plant engineers on dedicated Windows workstations, not for students or self-learners. The result: install friction kills the first-hour experience. You download a 4 GB installer, reboot twice, hit a licensing wall, and never write a line of ladder logic.

A browser-based PLC simulator changes the shape of that first hour. You load a URL, see the editor, pick a scenario, and get a passing test within minutes. Portability follows naturally: the same simulator works on a Chromebook in a university lab, on a Linux desktop at home, on a locked-down corporate laptop where you cannot install admin-gated software, and on a phone in a pinch.

This matters for three groups. Students cannot afford per-seat licensing and often do not have admin rights on shared lab machines. Engineers prepping for interviews want something they can run from a coffee shop. Plant engineers testing a quick logic change before a commissioning window do not want to spin up a VM just to verify a rung. Removing the install is the single biggest usability lever, and it is the one lever that a browser-native tool can pull cleanly.

We make no secret about the trade-off: a browser simulator is a learning and prototyping tool, not a production PLC. The final word on any logic change lives on the real controller. Our pitch is that getting there is cheaper, faster, and less painful if the first hundred iterations happen in a tab you can close.

Under the hood

A real scan cycle, in your browser.

The simulator implements the three-phase PLC scan cycle faithfully: input image update, program execution (rung-by-rung, top-to-bottom), then output image update. A configurable scan-time clock drives the whole loop so timers and counters behave identically to hardware.

The IO table is explicit and inspectable. Every input address (%I0.0, I:0/0) and every output coil (%Q0.1, O:0/0) has a live value you can watch during a run. Internal memory bits, timer accumulators, and counter presets are all visible so you can debug a rung without guesswork.

Function blocks follow the 61131-3 spec: TON (on-delay timer), TOF (off-delay), TP (pulse), CTU/CTD/CTUD (counters), R_TRIG/F_TRIG (edge detection), EQ/NE/GT/GE/LT/LE (compare), and PID. These map directly to the AB and Siemens equivalents when you switch dialect.

How field inputs and outputs map to the IO table in the PLC programming simulatorA digital input pushbutton wired to a PLC input card, and a PLC output card driving a lamp, with a sinking versus sourcing hint.I/O CARDINPUTOUTPUTPushbuttonI:0/0LampO:0/0sinking (NPN) vs sourcing (PNP)
Field devices wire to discrete inputs and outputs; the simulator exposes every bit in a live IO table you can watch as the program runs.
Questions

Frequently asked.

Yes. Run the guided first program without an account, then create a free account for 32 practice scenarios and beginner labs. There is no card, install, or trial clock. Pro adds all 170 published scenarios and interview prep.

Start programming in your browser.

Ten guided beginner PLC labs, the first 6 core curriculum lessons, and starter wiring and fault practice are free. No credit card. Sign up in under a minute — or run your first real PLC program without an account.

Related: learn PLC programming · ladder logic simulator.

Scan-cycle programming workbench

PLC programming simulator: write, scan, test and debug control logic

Direct answer

A PLC programming simulator lets you write ladder logic or Structured Text, run it on a repeating read-inputs, solve, write-outputs scan and watch simulated sensors and actuators respond, without a controller or vendor license. Its value is feedback: you predict what each scan should do, observe what it actually does and fix the first difference before the logic reaches real hardware.

This guide is written for students writing their first rungs, technicians who read programs but rarely write them, interview candidates rehearsing machine-control problems and engineers sketching a logic idea before opening the target IDE. The intended result is specific: you can explain why an output is on or off in terms of the input image, rung order and retained state, and you can show a passing behavioral test for start, run, stop and fault cases rather than a screenshot of a finished diagram.

System map / 02

NODE 01observable

Input image, not live wiring

At the start of each scan every input is copied into an image table, and the program reads that snapshot for the whole pass. A pushbutton that changes midway through the scan is not seen until the next one, which is why rung results are consistent within a scan and why a pulse shorter than one scan can be missed entirely.

NODE 02observable

Rung order is program logic

Rungs execute from top to bottom, so a bit written on rung 8 is not visible to rung 3 until the following scan. Moving a rung can therefore shift a result by exactly one scan. A program that only works because of its current rung order is fragile and should be restructured so each decision reads settled values.

NODE 03observable

Last write wins

If two rungs assign the same output coil, the one executed later overwrites the earlier result before outputs are updated. The field device follows the final value, so the first rung appears to do nothing. Give every output one owning rung and combine its conditions there, using set and reset forms only when a latch is intended.

NODE 04observable

Timers need continuous calls

A TON accumulates elapsed time only while its IN condition stays true on every scan and returns to zero as soon as IN goes false. TOF delays the falling edge and TP produces a fixed-length pulse. If the timer instruction is skipped or its enable drops for one scan, the elapsed value restarts and the done bit never arrives.

NODE 05observable

Levels versus edges

CTU, CTD and CTUD respond to a rising edge of the count input, so a sensor held true still adds one count per part. An ADD instruction on the same held condition adds one on every scan instead. Toggles, step advances and arithmetic triggered by a button therefore need R_TRIG or F_TRIG to turn a level into a single-scan event.

NODE 06observable

Behavior, not diagram shape

A scenario test drives the inputs through a scripted sequence and checks outputs and machine state at defined points. It does not compare your rungs with a model answer, so a different structure passes when it behaves correctly, while neat-looking logic fails when timing, interlocks or recovery after a fault are wrong.

Procedure / 03

  1. 01

    Turn the brief into an I/O table

    List every input and output the scenario provides, note whether each field device is normally open or normally closed, and write what the machine must do on start, stop and fault.

    Evidence: Each output has one named owning condition and each normally closed device has a stated healthy value.

    Avoid: Choosing contact instructions before knowing how the stop button or sensor is wired.

  2. 02

    Predict one scan by hand

    Pick one input combination and write the expected state of every rung and output before pressing Run.

    Evidence: The live I/O table and rung highlighting match the written prediction on repeated scans.

    Avoid: Running first and rationalizing whatever the outputs happen to do.

  3. 03

    Build the smallest runnable increment

    Write only the start/stop or first-step logic, run it, and add the next requirement once the first one behaves.

    Evidence: A valid partial program runs and makes the still-missing requirement obvious.

    Avoid: Writing the whole sequence in one pass and then debugging several faults at once.

  4. 04

    Toggle inputs deliberately

    Drive each input manually, including start and stop together, a held start button and a stop pressed while a timer is running.

    Evidence: Outputs stay defined for simultaneous and out-of-order commands.

    Avoid: Testing only the tidy start-then-stop order a demonstration would use.

  5. 05

    Run the scenario tests

    Execute the authored checks and read each failure reason against your I/O table and rung order.

    Evidence: Per-check results name the requirement that failed and the step at which it failed.

    Avoid: Adding timers or extra latches until a check turns green without knowing why it failed.

  6. 06

    Rebuild on the target

    Recreate the logic in the controller’s own IDE, apply its addressing and timer conventions, and repeat the same test cases.

    Evidence: The same input sequences produce the same outputs on the vendor simulator or hardware.

    Avoid: Assuming a browser pass proves scan time, firmware or I/O module behavior.

Diagnostic matrix / 04

Diagnostic symptoms, inspection points, interpretations and next actions for PLC programming simulator: write, scan, test and debug control logic
Observed symptomInspectInterpretationNext proving action
Motor runs only while Start is heldHolding contact tag, its position in parallel with Start, and whether Stop is in series with both branchesWithout a contact on the output tag in parallel with Start, or a latch, the rung is true only while the momentary input is true.Add the holding branch and prove that Stop and the overload each break it.
Stop button starts nothing or never stopsPhysical contact type of the stop device, its input value at rest and the contact instruction usedA normally closed stop button reads true when healthy; programming it with a normally closed instruction inverts the intended logic.Use a normally open instruction on the NC field input so a pressed button or broken wire stops the machine.
Output stays off although its rung is trueEvery rung that writes the same output coil and the order in which they executeA later rung with a false result overwrote the earlier true one before the output update.Merge the conditions into one owning rung and rerun the same input case.
Timer done bit is never seenTimer IN on consecutive scans, the elapsed value, and whether the done bit opens its own enableA timer that resets itself through its own done bit produces a pulse lasting one scan, which rungs above it may never observe.Drive IN from a stable state bit, or place consumers of the done bit after the timer rung.
Count jumps by many per partWhether the count comes from a counter instruction or ADD/MOV logic, and how long the sensor stays trueArithmetic executed on a level condition runs on every scan while the sensor is true.Insert R_TRIG before the increment, or use CTU, which counts rising edges.
Sequence skips a stepRung order of the step bits, their transition conditions, and whether one input advances two steps in the same scanIf step 2 is evaluated after step 1 sets it and uses the same transition input, the sequence cascades through both steps in one scan.Qualify transitions with an edge or require a different condition for each step.

Product evidence / 05

What the browser practice can actually demonstrate

Programs are parsed into a common representation and executed on a deterministic cycle that reads inputs, executes the program, updates outputs and advances the machine model, with live I/O, timer and counter values visible. Scenario tests pass on observed machine behavior across authored input sequences, so an equivalent solution passes and a tidy but wrong one fails.

Answer surface / 07

Can I learn PLC programming with only a simulator?

You can learn the language, scan behavior, sequencing and structured testing with a simulator, which covers much of what separates a working program from a broken one. Wiring, I/O module behavior, vendor IDE workflows, downloads and online edits still need a real or vendor-simulated controller, under supervision, before you rely on the skill at work.

Should I start with ladder logic or Structured Text?

Start with ladder if your work involves discrete machine control or reading existing plant programs, because rung highlighting makes scan behavior visible. Add Structured Text once you need calculations, comparisons, state machines or data handling. The simulator runs both against the same I/O, so you can write one requirement both ways and compare the results.

Why does my Structured Text output stay on after the condition goes false?

An assignment inside an IF block runs only while that branch executes. When the condition becomes false and there is no ELSE, the variable keeps its last value and behaves like a latch. Either assign the output directly from a Boolean expression, such as Lamp := Sensor AND NOT Fault, or write both branches explicitly.

How is a simulated scan different from a real PLC scan?

The order is the same: read inputs, execute the program, write outputs. Here time advances on a deterministic teaching clock, so results repeat exactly. A real controller adds variable scan time, communication and task overhead, input filtering, module update delays, interrupts and a watchdog, and those effects only appear on the target hardware.

What should I program first in a PLC simulator?

Begin with one input driving one output, then a normally closed input, then a three-wire start/stop with a holding contact. Add an on-delay timer, a counter with a reset, and finally a short sequence such as a traffic light. Each exercise introduces one scan-related idea that the next one depends on.

Can I copy my simulator program into a real PLC?

IEC-style Structured Text is the most portable, but it still needs the target’s declarations, addresses and library names. Ladder must be re-entered in the vendor editor. Native project-file export is not promised, so treat the browser program as a tested design to recreate, then run the same test cases again on the target.

How do I know my program is correct and not just lucky?

Write the test cases before you run: normal start and stop, simultaneous commands, a held input, a sensor that never arrives, and restart after a fault. A program that passes all of them from a reset state on repeated runs is correct for the modeled requirement; a single successful cycle only proves one path.

Is a PLC programming simulator useful for interview preparation?

Yes, because interview tasks are usually holding circuits, timers, counters, sequences and interlocks that you must explain aloud. Practice stating what each rung does on the current scan, why an output changes and how you would test the failure case. Tracing behavior clearly matters more to an interviewer than remembering one vendor’s mnemonics.