Volumes are a feature that enables persistent data for services on Railway.

How it works

When mounting a volume to a service, a volume is made available to the service on the specified mount path.

Size Limits

Volumes have a max size based on the subscription plan.

  • Free and Trial plans: 0.5GB
  • Hobby plans: 5GB
  • Pro and team plans: 50GB

Volumes can be "Grown" after upgrading to a different plan.

Please reach out to us at [email protected] if you need more space.


Volumes are billed at $0.25 / GB, billed monthly.

You are only charged for the amount of storage used by your volumes. Each volume requires a small amount of space to store metadata about the filesystem, so a new volume will start with a small amount of space used.


Volumes is a newer feature that is still under development. Here are some limitations of which we are currently aware:

  • Each service can only have a single volume
  • Replicas cannot be used with volumes
  • There is no built-in S/FTP support
  • To prevent data corruption, we prevent multiple deployments from being active and mounted to the same service. This means that there will be a small amount of downtime when re-deploying a service that has a volume attached, even if there is a healthcheck endpoint configured
  • Down-sizing a volume is not currently supported, but increasing size is supported
  • When resizing a volume, all deployments must be taken offline to prevent data corruption
  • There is no file browser, or direct file download. To access your files, you must do so via the attached service's mount point
  • Docker images that run as a non-root UID by default will have permissions issues when performing operations within an attached volume. If you are affected by this, you can set RAILWAY_RUN_UID=0 environment variable in your service.


Refer to the guide on how to use volumes for more details on how to use the feature.

Edit this file on GitHub