Set units: ? Hide this line
Length Map coordinates Diameter Elevation and head Pressure Flow Velocity Head loss gradient Water age Roughness

Map size
Rotate the map
X: -- Y: --
Not georeferenced
© OpenStreetMap contributors © Mapbox © OpenStreetMap © Maxar Improve this map © Mapbox © OpenStreetMap Improve this map
Visibility

Nothing is docked here yet. Everything that belongs to the whole project is in Settings.

Profile along a path
Ground surface Hydraulic grade line Pressure
Values versus time
Distribution of values
Flow balance
Properties
Find and replace
Settings

Symbology

Node labelsSaved with the project
Node colorsSaved with the project
Link labelsSaved with the project
Link colorsSaved with the project
CustomerSaved with the project
AllSaved with the project

MapSaved with the project

MapSaved with the project
Positions

PageSaved in this browser

PageSaved in this browser

Assets

ID prefixesSaved with the project
ValuesSaved with the project
Custom properties ?Saved with the project

Calculation

UnitsSaved with the project
TimeSaved with the project
HydraulicsSaved with the project
EnergySaved with the project
QualitySaved with the project

Credits

Libraries
Fire flow analysis
Criticality analysis
Demand scaling
Pump energy report
Contour plot
Screenshot
Scenario comparison
Run report

	
Status changes
Scenario manager ?
Full report
Calibration report
Fire flow run
New project
Coordinate system ?
Units ?
Convert as
Coordinate system ?
Units ?
Round converted values ?
Round converted values Suffix ?

Converting back is a second conversion, not an undo. A number converted and converted back may not return exactly as it was entered.

Coordinate system
About

EPANET++

You are loved and cherished forever, you have nothing to fear, and you are not ruining everything.

Licensed under the GNU General Public License v3.0 or later.
Copyright © 2009–2026 Thomas Gail Haws

Credits

2026-10-21 02:21 UTC · c375f221

User manual
Contents

Nothing matched.

Using the user manual

User manual keyboard shortcuts
?Open the user manual at the toolbar button or menu row under the pointer or that has focus. Elsewhere, open it with the search field selected. The key does not open it while a field is being typed in or while a question is open.
F1Open the user manual at the entry for the box that has focus.
Ctrl+KOpen the user manual with the search field selected and any selected text, up to 80 characters, in it. It replaces the browser's own Ctrl+K, except while a question is open, when the user manual is not opened.
/Select the search field while the user manual has focus.
EscWhile the user manual has focus, close it and return focus to where it was.
Searching, links, and what is remembered

Search ignores capitals and accents and lists the rows and entries that contain the text typed. Choosing a row shows where that control is. It never runs the control. On a phone, where the toolbar is folded away, a toolbar row opens the menu row that does the same thing.

The address of the page follows the entry being read, as in Looped-Network.php#guide, so it can be copied as a link to that entry. Closing the user manual clears it. The user manual remembers in this browser whether it was open, its position and size, and whether its contents list is hidden. On a phone the contents list starts hidden.

Toolbar

Reading a row

Each row is one toolbar button, in the order of the strip, with a rule between groups. A row shows the button's icon, name, and tip, then its keys. Where a menu row does the same thing, the row also shows the menu path after the words Also in. Clicking a row points at the button on the toolbar. It never runs the button. When the button is not on screen, the row opens the menu row that does the same thing.

Dimmed names

A dimmed name belongs to a button that is not on screen now. A button that is on screen is not dimmed, whether or not it can act at that moment. Calculate is dimmed while Recalculate automatically is checked, because the button appears only when that setting is cleared.

On a phone in tall mode, only the five run controls stay on the toolbar. Every other name is dimmed, and clicking one opens the menu row that does the same thing. The Bottom panel button has no menu row, so its row can only say that the control is not on screen.

Buttons with a corner triangle

Zoom to fit and Select a window have a small triangle in the lower-right corner. Pressing the button a second time, with nothing pressed between, changes it: Zoom to fit becomes Zoom Window, and Select a window cycles through the window, lasso, and polygon shapes. Clicking the corner of Zoom to fit enters Zoom Window at once, without fitting the view.

A dimmed name is a button that is currently hidden on the toolbar.

Menus

Menu keyboard shortcuts
Alt+Shift+letterOpen the menu with that letter, then press a row's letter to choose it. The letters show while you use the keyboard. On a Mac, use Ctrl+Option.
F10Go to the menu bar.
Menus from the keyboard

The letters after Alt+Shift are keys at fixed positions, F for File, E for Edit, M for Map, W for Water, H for Help, and L for Language, on every keyboard layout and in every language. After F10, the letter of a menu alone opens it, and Esc on the menu bar returns focus to where it was.

Rows that only a pointer can use have no letter, and the arrow keys skip them. They include Vertices, the three area selections, the Insert tools, Zoom Window, and Screenshot.

Reading the menu list

The list is drawn from the menus themselves: File, Edit, Map, Water, and Help, each under its own heading, with the rows of a fly-out indented under the row that opens it and a rule between groups. It leaves out rows that are hidden now, headings inside a menu, and rows named from the project or the browser, such as scenario names. It goes one fly-out deep, and it has no entry for the Language menu. A row that is disabled now is still listed, with no mark to show that it is disabled. Clicking a row opens the menu and fly-out with that row pointed at. It never runs the row.

Map

Map keyboard shortcuts
0 or EscSelect.
1Junction Pipe Chain
AArea select window/lasso/polygon
2Add a junction.
3Add a reservoir.
4Add a tank.
5Add a pipe.
6Add a pump.
7Add a valve.
8Add a customer.
9Add text.
DeleteDelete the selection.
Ctrl+ZUndo the last change.
+ or =Zoom in.
-Zoom out.
WZoom Window: drag a rectangle on the map to zoom to that area.
Undo and Redo

Ctrl+Z undoes the last change, and Ctrl+Y or Ctrl+Shift+Z redoes it. In a Tables cell, the keys belong to the project while the cell is only selected, and to the text of the cell once typing has begun. The page keeps the last 20 steps, in memory only, and switching projects clears them. A step restores the scenarios, the open scenario, and the units along with the drawing.

Delete

Delete or Backspace deletes the selection, except while typing in a field, where the key belongs to the field. With nothing selected, Delete says so, and Backspace does nothing. One Undo reverses the deletion of several assets. In a scenario other than Base, Delete does not remove an asset that exists in Base; the Scenario manager entry describes what it does.

Esc

An Esc that closes a menu, a pull-down, or a box does nothing else. The Properties, Settings, and Libraries boxes close only when focus is in the box and the pointer is over it. With none of those open, Esc returns the active tool to Select, and in Select it clears the selection. A half-drawn pipe takes one Esc to abandon and a second to return to Select. In a field, Esc belongs to the field.

Letters, digits, and zoom keys

W starts Zoom Window, A starts selecting an area (pressing A again cycles the window, lasso, and polygon), and F draws a Shape. The plus or equals key zooms in, and the minus key zooms out, by one wheel step. These keys and the digits 0 to 9 do nothing on the map when another key makes them a shortcut, such as Ctrl+C, do nothing while typing in a field, and leave the letters of an open menu to its rows. A digit typed on a selected Tables cell overwrites the cell instead of choosing a tool.

Screenshot

Screenshot keyboard shortcuts
SSnip, while Screenshot is open.
EEraser, in the markup view.
Ctrl+Z, Ctrl+YUndo and redo, in the markup view.
EscCancel a snip, or leave the eraser. In the markup view, close it when nothing is drawn.

Tables

Table columns help
Click headingSelect column
Ctrl+click or Shift+click another headingAdd or extend column selection
Drag or use Manage columns… in right-click or ⋮ menuMove (reorder) selected column(s)
Hover a heading's top corner, or select or Tab into a headingMenu ⋮ and sort arrow.
Right-click heading or ⋮ menu in heading top right cornerHide, Show all, or Manage visibility and order
Arrow icon in heading top right cornerSort by column
Right-click, ⋮ menu in heading top right corner, or Ctrl+Shift+VPaste as new rows at end of table
Table keyboard shortcuts
Arrow keysNavigate.
Tab, EnterFinish the entry and move one cell across (Tab) or down (Enter).
Shift+Tab, Shift+EnterMove one cell back (Shift+Tab) or up (Shift+Enter).
Shift+arrow keysExtend the selection.
Ctrl+CCopy the selection.
Ctrl+DFill the selection down from its top row.
Ctrl+EnterFill the selection with the active cell's value.
Ctrl+ASelect the whole table.
Ctrl+Shift+VPaste as new rows at end of table.
Ctrl+Shift+PageDown, Ctrl+Shift+PageUpSwitch to the next or previous tab, whether a table or a graph.
DeleteClear the active cell. To clear a selected range, right-click and choose Delete.
F2Open a cell to edit it.
EscCancel an edit.
The tabs

To open the pane, click the Bottom panel button or choose Water, Tables. Its tabs, left to right, are Junctions, Reservoirs, Tanks, Pipes, Pumps, Valves, Text, Customers, Shapes, Settings, Scenarios, Time series, Profile, Frequency, and Flow balance. The Scenarios tab is shown when Basic mode is cleared. Column width, order, and visibility are kept in this browser, not in the project.

Selecting, entering, and editing a cell

A cell is in one of three states. While it is only selected, the arrow keys move from cell to cell, and Ctrl+Z is the Undo of the project. Typing a character over a selected cell starts an entry: the typed text replaces the value, and an arrow key commits it and moves to the next cell. F2 or a double-click opens the cell to edit it: the caret is in the value, and the arrow keys move the caret. In an entry and in an edit, Ctrl+Z undoes the typing. Esc cancels the entry or edit and leaves the cell selected.

Filling, filters, and scenarios

Ctrl+D fills a selected range down from its top row, and Ctrl+Enter fills it with the value of the active cell. Both leave the ID column and read-only cells alone, and a notice states how many cells were filled and how many were not changed. Ctrl+Shift+L shows only the assets selected on the map. With a filter on, Ctrl+A and Ctrl+D act on the rows shown only, and a row edited so that it no longer matches stays until the filter is applied again.

In a scenario other than Base, a cell edit, Ctrl+D, Ctrl+Enter, and a paste are stored as overrides of the open scenario.

Boxes

Each box can be moved, resized, docked at the left or right of the map, or closed. The ? in a box's title bar opens its help.

When the pointer leaves, a box without focus hides after a short delay. A box with focus hides when you click outside it, press Esc, or Tab out of it with the pointer elsewhere.

Docking and tabs

The corner of a box's title bar has Dock at the left of the map, Dock at the right of the map, and Float, and, once the box is docked, Auto-hide. A docked box is a column beside the map. With Auto-hide, it is a tab on a slim strip at the edge of the map. The tab opens the box on hover, after 150 ms with a mouse or pen, or on a click or tap, and the box tucks back into its tab as described above. A tucked box is still open. A menu row or toolbar button that opens it brings it out of its tab.

Dragging a docked box by its title bar floats it and turns auto-hide off. Boxes docked on one side share one width, and the map keeps at least 320 px. Tabs are reordered by dragging them or by pressing Alt+Up or Alt+Down on a focused tab.

What a box remembers

Each box keeps in this browser where it floats, its size, whether it is open, its dock side, whether it auto-hides, its docked width, and the place of its tab. Properties, Criticality analysis, Demand scaling, and Calibration keep only their dock side, auto-hide, tab place, and whether they are open; where they float lasts for one page load. A browser with no saved layout starts with some boxes docked as tabs, and nothing is stored until a box is changed.

On a phone

At 640 px or narrower, no box docks and every box fills the window. The dock buttons are not offered. A docked layout is kept and returns on a wider window.

About this calculator

How it is solved
By default the network is solved by the EPANET solver. When a total run time is set, each reporting time step is calculated in sequence: tanks fill and drain, demands follow their patterns, and the toolbar plays back the run. With Use the built-in solver when possible checked, a single instant solution can be solved by the built-in solver instead, but an extended period simulation is always solved by the EPANET solver.
What it does not do
Surge and water hammer are not modeled: all results are for steady or slowly varying flow, not for the transient pressure wave caused by rapid valve closure. Multi-species water quality (EPANET-MSX) is not modeled. Water age, source trace, and one reacting chemical are.

Notes on this page

Saving projects
Every project is a tab, and every tab is saved in this browser as the work proceeds. Clearing the browser's data deletes them all, so the work belongs in a file: File, Save as. An asterisk on a tab means it holds changes that are not in a file, and closing that tab asks first. Nothing is ever written to a file unless Save or Save as is chosen. In some browsers a project connects to the file it is saved to, and File, Save writes back to that same file from then on; in others no connection is possible, so Save is disabled and only Save as is available. This site keeps track of who has a project file open, so that two people do not write over each other. Opening a file that a colleague already has open offers Ask, Open read-only, and Break lock. If the server cannot be reached, a warning states that another user can edit the same file at the same time.
Pump curve
A pump follows H = H₀ − aQ^b, where H is the head the pump adds and Q is the flow through it. The points of the curve are entered in Water, Libraries, as a Pump head curve, and the pump states that curve in Properties. Three points, the head at zero flow, the normal working point, and the point of highest flow, fit H₀, a, and b directly, and follow a published curve most closely. Two points fit a parabola (b = 2) with its peak at zero flow. One point uses EPANET’s rule: the head at zero flow is 1.33334 times the head entered, and the highest flow is 2 times the flow entered, which again gives b = 2. A pump with no curve stated adds no head. The curve is not truncated where the head reaches zero, so a flow greater than the curve can deliver produces a negative head. The remedy is a larger pump or a smaller demand, not a different curve fit. A curve can hold more than three points. The EPANET solver is given all of them and interpolates between them, while the Equation line and the built-in solver use the lowest, middle, and highest points.
Color band boundaries stay the same
Color band boundaries are set when a data classification method is chosen. They are not set again at each time step, because that would make the colors mean something new at every step, which is not helpful for visualizing a system. A scenario shows the boundaries of Base. EPANET works the same way. To get new boundaries, choose a method again or enter boundaries.
Which EPANET this page runs
The EPANET solver on this page is OWA-EPANET 2.3.5, released on 20 February 2025. EPANET is developed by Open Water Analytics, a community that works with the United States Environmental Protection Agency, which released version 2.2.0 in December 2019. The run report calls it 2.3.05 because the engine writes the last number in two digits. It is delivered to this page through epanet-js 0.9.0 by Luke Butler, under the MIT license, and it runs in the browser: the network is never sent to a server to be solved.
Example on Net1: a pump past its curve
Open the Net1 example and choose Water, Libraries. Curve 1, Pump Curve for Pump 9, has one point, 1500 gpm at 250 ft. The head at zero flow is 333.3 ft and the highest flow is 3000 gpm. At 3500 gpm, which is past the end of the curve, the curve gives a head of −120.4 ft. The EPANET solver reports that same head, a loss of 120.4 ft across the pump, and warns that pumps cannot deliver enough flow or head.

May we save a random code in this browser, so we don't count you again? The code is made up on the spot, says nothing about you or your device, and records nothing you enter.

Privacy notice Terms of use