Go to file
Aliaksei Chapyzhenka b63c05c873 3.3.0 2023-07-01 19:37:39 -07:00
.github -node 19 +node20 in CI 2023-07-01 18:50:44 -07:00
bin Add new edge with tee termination 2021-10-05 23:19:36 +02:00
lib fixes #369 ; brutal white backdrop under every waveform 2023-07-01 19:24:52 -07:00
skins Add new edge with tee termination 2021-10-05 23:19:36 +02:00
test Add a test case for the new 't' command, and polycurves 2022-12-28 12:52:34 -05:00
unpacked fixes #246; delete enable-background:accumulate 2020-05-20 16:11:53 -07:00
vue export skins and add vue.js example component 2018-06-08 17:05:46 +01:00
.gitignore goodbye grunt, bower. 2020-04-19 13:20:00 -07:00
LICENSE Happy New Year 2023-01-05 22:11:26 -08:00
README.md Fix link to WaveJSON 2023-02-22 22:10:53 +01:00
package.json 3.3.0 2023-07-01 19:37:39 -07:00


Linux MacOS Windows NPM version PayPal donate button Coverage Status



WaveDrom is a Free and Open Source online digital timing diagram (waveform) rendering engine that uses javascript, HTML5 and SVG to convert a WaveJSON input text description into SVG vector graphics.

WaveJSON is an application of the JSON format. The purpose of WaveJSON is to provide a compact exchange format for digital timing diagrams utilized by digital HW / IC engineers.

The engine is using WaveDromSkin skin mechanism to render a complete picture.



![signal step4](https://svg.wavedrom.com/github/wavedrom/wavedrom/trunk/test/signal-step4.json5)

signal step4

![reg vl](https://svg.wavedrom.com/github/wavedrom/wavedrom/trunk/test/reg-vl.json5)

reg vl

<img src="https://svg.wavedrom.com/{WAVEDROM SOURCE}/>
<img src="https://svg.wavedrom.com/{signal:[{name:'clk',wave:'p......'},{name:'bus',wave:'x.34.5x',data:'head body tail'},{name:'wire',wave:'0.1..0.'}]}"/>

Web usage

WaveDrom timing diagrams can be embedded into the web pages, blogs, and wikis to be rendered by the most of modern browsers.

HTML pages

There are three steps to insert WaveDrom diagrams directly into your page:

  1. Put the following line into your HTML page <header> or <body>:

From a CDN:

<script src="https://cdnjs.cloudflare.com/ajax/libs/wavedrom/3.1.0/skins/default.js" type="text/javascript"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/wavedrom/3.1.0/wavedrom.min.js" type="text/javascript"></script>
  1. Set the onload event for the HTML body.
<body onload="WaveDrom.ProcessAll()">
  1. Insert WaveJSON source inside HTML <body> wrapped with the <script> tag:
<script type="WaveDrom">
{ signal : [
  { name: "clk",  wave: "p......" },
  { name: "bus",  wave: "x.34.5x",   data: "head body tail" },
  { name: "wire", wave: "0.1..0." },

The script will find all <script type="WaveDrom"> instances and insert a timing diagram at that point.



Blogs & Wikis

ObservableHQ examples: (https://observablehq.com/collection/@drom/wavedrom)

Blogger integration: (http://wavedrom.blogspot.com/2011/08/wavedrom-digital-timing-diagram-in-your.html)

MediaWiki integration: (https://github.com/Martoni/mediawiki_wavedrom)


WaveDromEditor is an online real-time editor of digital timing diagrams based on the WaveDrom engine and WaveJSON format.

Standalone WaveDromEditor


  1. Download latest wavedrom-editor-v2.4.2-win-{ia32|x64}.zip release from here: releases
  2. Unzip it into a working directory.
  3. Run the editor: wavedrom-editor.exe


  1. Download the latest wavedrom-editor-v2.4.2-linux-{ia32|x64}.tar.gz release from here: releases
  2. unzip-untar the package: tar -xvzf wavedrom-editor-v2.3.2-linux-x64.tar.gz
  3. Run the editor: ./WaveDromEditor/linux64/wavedrom-editor


  1. Download the latest wavedrom-editor-v2.4.2-osx-x64.zip release from here: releases
  2. Unzip
  3. Run


Please use the WaveDrom user group for discussions, questions, ideas, or whatever.