Vessel.js is a JavaScript library for conceptual ship design with an object-oriented paradigm. Vessel.js represents the vessel as an object, which is used to simulate different functionalities and behaviors. Currently, the library includes methods for hydrostatic and stability calculations.

The library is developed by Ship Design and Operation Lab at Norwegian University of Science and Technology (NTNU) in Ålesund.

Dowload the latest version here:

Import Vessel.js in html by using the following script:

<script src="Vessel.js"></script>


When contributing, fork the repository and send pull requests with your commits. If your modifications are only to files related to examples and you have pull request authorization, you can approve them by yourself. If not, then wait for review and approval by the development team.

You are also welcome to create issues reporting bugs or suggesting improvements and features for development.


Ship in regular ocean

Ships in regular ocean

Barge motion with equations

Barge Motion with WAMIT

Ship with mooring

Ship with mooring (parametric)

Side by side 3

Side by side 2

Side by side 1


Simple Multibody Example

Pendulum load

Epoch Analysis

Pendulum in ocean

Ship in still water

Ships in still water

Ship visualization


Hull hydrostatics

General Arrangement





Scale Ship

Validation of ship stability

Stability with Blocks

ECMS 2019


Vessel.js tutorials are available on the ObservableHQ notebook collection. Don't know where to start? Try the learning guide.

Tutorial Collection at ObservableHQ



Published works in time order: