Manage branches
Data resides in a branch. Each Neon project is created with a root branch called main
, which is also designated as your default branch. You can create child branches from main
or from previously created branches. A branch can contain multiple databases and roles. Tier limits define the number of branches you can create in a project and the amount of data you can store in a branch.
A child branch is a copy-on-write clone of the parent branch. You can modify the data in a branch without affecting the data in the parent branch. For more information about branches and how you can use them in your development workflows, see Branching.
You can create and manage branches using the Neon Console, Neon CLI, or Neon API.
important
When working with branches, it is important to remove old and unused branches. Branches hold a lock on the data they contain, preventing disk space from being reallocated. Neon retains a data history by default. You can configure the retention period. See Point-in-time restore. To keep data storage to a minimum, remove branches before they age out of the history retention window.
Default branch
Each Neon project has a default branch. In the Neon Console, your default branch is identified by a DEFAULT
tag. You can designate any branch as the default branch for your project. The advantage of the default branch is that its compute endpoint remains accessible if you exceed your project's limits, ensuring uninterrupted access to data that resides on the default branch, which is typically the branch used in production.
- For Neon Free Tier users, the compute endpoint associated with the default branch is always available.
- For users on paid plans, the compute endpoint associated with the default branch is exempt from the limit on simultaneously active computes, ensuring that it is always available. Neon has a default limit of 20 simultaneously active computes to protect your account from unintended usage.
Non-default branch
Any branch not designated as the default branch is considered a non-default branch. You can rename or delete non-default branches.
- For Neon Free Tier users, compute endpoints associated with non-default branches are suspended if you exceed the Neon Free Tier active hours limit of 20 hours per month.
- For users on paid plans, default limits prevent more than 20 simultaneously active compute endpoints. Beyond that limit, a compute endpoint associated with a non-default branch remains suspended.
Protected branch
"Protected" is a status assigned to a branch that limits access based on IP addresses. Only IPs listed in the project’s IP allowlist can access this branch. Typically, a protected status is given to a branch or branches that hold production data or sensitive data. The protected branch feature is only supported on Neon's Scale plan, where you can designate up to 5 protected branches. For information about how to configure a protected branch, see Set a branch as protected.
Create a branch
To create a branch:
-
In the Neon Console, select a project.
-
Select Branches.
-
Click Create branch to open the branch creation dialog.
-
Enter a name for the branch.
-
Select a parent branch. You can branch from your Neon project's default branch or a non-default branch.
-
Select an Include data up to option to specify the data to be included in your branch.
note
The Specific date and time and the Specific Log Sequence Number Data options do not include data changes that occurred after the specified date and time or LSN, which means the branch contains data as it existed previously, allowing for point-in-time restore. You can only specify a date and time or LSN value that falls within your history retention window. See Configure history retention.
note
The Specific date and time and the Specific Log Sequence Number Data options do not include data changes that occured after the specified date and time or LSN, which means the branch contains data as it existed previously, allowing for point-in-time restore. You can only specify a date and time or LSN value that falls within your history retention window. See Configure history retention.
-
Click Create new branch to create your branch.
You are directed to the Branch overview page where you are shown the details for your new branch.
View branches
To view the branches in a Neon project:
-
In the Neon Console, select a project.
-
Select Branches to view all current branches in the project.
Branch details in this table view include:
- Branch: The branch name, which is a generated name if no name was specified when created.
- Parent: Indicates the parent from which this branch was created, helping you track your branch hierarchy.
- Active time: Number of hours the branch's compute was active so far in the current billing period.
- RW Compute: Shows the current compute size and status for the branch's compute.
- Data size: Indicates the logical data size of each branch, helping you monitor your plan's storage limit. Data size does not include history.
- Last active: Shows when the branch's compute was last active.
-
Select a branch from the table to view details about the branch.
Branch details shown on the branch page include:
- ID: The branch ID. Branch IDs have a
br-
prefix. - Created: The date and time the branch was created.
- Compute hours: The compute hours used by the branch in the current billing period.
- Active hours since: The active hours used by the branch compute in the current billing period.
- Data size: The logical data size of the branch. Data size does not include history.
- Parent branch: The branch from which this branch was created (only applicable to child branches).
- Branching point: The point in time, in terms of data, from which the branch was created (only applicable to child branches).
- Last data reset: The last time the branch was reset from the parent branch (only applicable to child branches). For information about the Reset from parent option, see Reset from parent.
- Compare to parent: For information about the Open schema diff option, see Schema diff.
- ID: The branch ID. Branch IDs have a
The branch details page also includes details about the Computes, Roles & Databases, and Child branches that belong to the branch. In Neon, all of these objects are associated with a particular branch. For information about these objects, see:
Rename a branch
Neon permits renaming a branch, including your project's default branch. To rename a branch:
- In the Neon Console, select a project.
- Select Branches to view the branches for the project.
- Select a branch from the table.
- On the branch overview page, click the Actions drop-down menu and select Rename.
- Specify a new name for the branch and click Save.
Set a branch as default
Each Neon project is created with a default branch called main
, but you can designate any branch as your project's default branch. The benefit of the default branch is that the compute endpoint associated with the default branch remains accessible if you exceed project limits, ensuring uninterrupted access to data on the default branch. For more information, see Default branch.
To set a branch as the default branch:
- In the Neon Console, select a project.
- Select Branches to view the branches for the project.
- Select a branch from the table.
- On the branch overview page, click the Actions drop-down menu and select Set as default.
- In the Set as default confirmation dialog, click Set as default to confirm your selection.
Set a branch as protected
"Protected" is a status assigned to a branch that limits access based on IP addresses. Only IPs listed in the project’s IP allowlist can access this branch. This feature is available on Neon's Scale plan, which supports up to five protected branches.
For the protected status to have any effect, you must:
- Define an IP allowlist.
- Select the Restrict IP access to protected branches only option.
For instructions, see Configure IP Allow.
To designate a branch as protected:
- In the Neon Console, select a project.
- Select Branches to view the branches for the project.
- Select a branch from the table.
- On the branch overview page, click the Actions drop-down menu and select Set as protected.
- In the Set as protected confirmation dialog, click Set as protected to confirm your selection.
For step-by-step instructions, refer to our Protected branches guide.
Connect to a branch
Connecting to a database in a branch requires connecting via a compute endpoint associated with the branch. The following steps describe how to connect using psql
and a connection string obtained from the Neon Console.
tip
You can also query the databases in a branch from the Neon SQL Editor. For instructions, see Query with Neon's SQL Editor.
- In the Neon Console, select a project.
- On the project Dashboard, under Connection Details, select the branch, the database, and the role you want to connect with.
- Copy the connection string. A connection string includes your role name, the compute endpoint hostname, and database name.
- Connect with
psql
as shown below.
tip
A compute endpoint hostname starts with an ep-
prefix. You can also find a compute endpoint hostname on the Branches page in the Neon Console. See View branches.
If you want to connect from an application, the Connection Details widget on the project Dashboard and the Frameworks and Languages sections in the documentation provide various connection examples.
Reset a branch from parent
Use Neon's Reset from parent feature to instantly update a branch with the latest schema and data from its parent. This feature can be an integral part of your CI/CD automation.
You can use the Neon Console, CLI, or API. For more details, see Reset from parent.
Restore a branch to its own or another branch's history
There are several restore operations available using Neon's Branch Restore feature:
- Restore a branch to its own history
- Restore a branch to the head of another branch
- Restore a branch to the history of another branch
You can use the Neon Console, CLI, or API. For more details, see Branch Restore.
Delete a branch
Deleting a branch is a permanent action. Deleting a branch also deletes the databases and roles that belong to the branch as well as the compute endpoint associated with the branch. You cannot delete a branch that has child branches. The child branches must be deleted first.
To delete a branch:
- In the Neon Console, select a project.
- Select Branches.
- Select a branch from the table.
- On the branch overview page, click the Actions drop-down menu and select Delete.
- On the confirmation dialog, click Delete.
Check the data size
Plan limits define the amount of data you can store.
You can check the logical data size of each branch by viewing the Data size
value on the Branches widget or page in the Neon Console. Alternatively, you can run the following query:
Data size does not include history.
info
Neon stores data in its own internal format.
Branching with the Neon CLI
The Neon CLI supports creating and managing branches. For instructions, see Neon CLI commands — branches. For a Neon CLI branching guide, see Branching with the Neon CLI.
Branching with the Neon API
Branch actions performed in the Neon Console can also be performed using the Neon API. The following examples demonstrate how to create, view, and delete branches using the Neon API. For other branch-related API methods, refer to the Neon API reference.
note
The API examples that follow may not show all of the user-configurable request body attributes that are available to you. To view all of the attributes for a particular method, refer to the method's request body schema in the Neon API reference.
The jq
option specified in each example is an optional third-party tool that formats the JSON
response, making it easier to read. For information about this utility, see jq.
Prerequisites
A Neon API request requires an API key. For information about obtaining an API key, see Create an API key. In the examples shown below, $NEON_API_KEY
is specified in place of an actual API key, which you must provide when making a Neon API request.
Create a branch with the API
The following Neon API method creates a branch. To view the API documentation for this method, refer to the Neon API reference.
The API method appears as follows when specified in a cURL command. The endpoints
attribute creates a compute endpoint, which is required to connect to the branch. A branch can be created with or without a compute endpoint. The branch
attribute specifies the parent branch.
note
This method does not require a request body. Without a request body, the method creates a branch from the project's default branch, and a compute endpoint is not created.
- The
project_id
for a Neon project is found on the Project settings page in the Neon Console, or you can find it by listing the projects for your Neon account using the Neon API. - The
parent_id
can be obtained by listing the branches for your project. See List branches. The<parent_id>
is theid
of the branch you are branching from. A branchid
has abr-
prefix. You can branch from your Neon project's default branch or a previously created branch.
The response body includes information about the branch, the branch's compute endpoint, and the create_branch
and start_compute
operations that were initiated.
Response body
List branches with the API
The following Neon API method lists branches for the specified project. To view the API documentation for this method, refer to the Neon API reference.
The API method appears as follows when specified in a cURL command:
The project_id
for a Neon project is found on the Project settings page in the Neon Console, or you can find it by listing the projects for your Neon account using the Neon API.
The response body lists the project's default branch and any child branches. The name of the default branch in this example is main
.
Response body
Delete a branch with the API
The following Neon API method deletes the specified branch. To view the API documentation for this method, refer to the Neon API reference.
The API method appears as follows when specified in a cURL command:
- The
project_id
for a Neon project is found on the Project settings page in the Neon Console, or you can find it by listing the projects for your Neon account using the Neon API. - The
branch_id
can be found by listing the branches for your project. The<branch_id>
is theid
of a branch. A branchid
has abr-
prefix. See List branches.
The response body shows information about the branch being deleted and the suspend_compute
and delete_timeline
operations that were initiated.
Response body
You can verify that a branch is deleted by listing the branches for your project. See List branches. The deleted branch should no longer be listed.
Need help?
Join our Discord Server to ask questions or see what others are doing with Neon. Users on paid plans can open a support ticket from the console. For more detail, see Getting Support.
Last updated on