VegBank is the public repository for vegetation plot data, maintained by the Ecological Society of America's Vegetation Classification Panel. These data support the development of the U.S. National Vegetation Classification (USNVC) and general ecological research across North America.
These data are also available for access with R via the vegbankr R package, and in other languages via the VegBank REST API. To upload data, request contributor permissions from the ESA Vegetation Classification Panel. Once your contributor role is granted, you will be able to upload new plot data with the vegbankr R package.
Browse the FAQ page and other info in the About dropdown for additional documentation. Please report any bugs here with details about what you were doing when the problem occurred.
When you open the app you’ll land on the Home page. Here’s an overview of what you can do on different pages:
Sibbaldiopsis tridentata, CEGL001833, Eleocharis palustris Marsh, BADL.126, ob.ob.3736, or California)Here are some of the basic functions available in the app:
"Quercus alba" ).oak prairie ).-alliance).Frequently Asked Questions about the VegBank database and website.
Please select from the following questions, or browse through this file:
What is VegBank?
Who runs VegBank?
What is a plot?
What is a community?
What is a plant concept? What is a community concept?
Where does VegBank get its plots and other data?
What is your standard list of species/communities?
How do I find plots in VegBank?
How do I download VegBank data to my computer?
What features does VegBank offer for analysis of plot data?
What is metadata?
How do I cite VegBank?
What is a VegBank Code?
How is VegBank financed? How can I help VegBank operate financially?
How can I get help with VegBank? Is there a tutorial?
What if I find something not working in VegBank?
VegBank is the vegetation plot database of the Ecological Society of America’s Panel on Vegetation Classification. VegBank stores data about vegetation plots and necessary supplemental data, such as a plant taxon database and community type database. VegBank’s purpose is to allow plant ecologists to submit and share data to allow permanent documentation of plot data, which will provide a permanent record of plots which define communities.
VegBank is operated by the National Center for Ecological Analysis and Synthesis in cooperation with the Ecological Society of America’s Vegetation Panel.
The purpose of plots is to record the vegetation and its environmental context. A plot may be contained by a single bounded area, such as a 50m x 20m rectangle. It could also consist of smaller subplots which sample vegetation over a large range. While we encourage plots to have boundaries and definite size, VegBank also accepts relevés that have no bounds as valid plots. An observation is a one-time record of vegetation present in a plot. So multiple observations of a plot could be made at different times, producing different values for both vegetation (i.e., which taxa are present, and their abundance if recorded) and environmental variables (e.g., soil characteristics).
In overly simple terms, a community is a set of plant taxa that live adjacent to one another within a set of physical conditions. This community of co-occurring plants may be seen to repeat itself in a predictable pattern. One may classify (or interpret) a plot as belonging to a certain community type.
The USNVC Guide to the Classification provides more full definitions for the 8 levels of the Natural Vegetation Heirarchy from Biome down to Association.
Communities are Concept-Based in VegBank, meaning they are defined by a combination of a name and a reference. See the What is a Concept? FAQ Topic for more information on Concepts.
Generally, people use only a plant name to refer to a particular plant taxon. However, names may mean different things to different people or at different times. When users view a plant in VegBank, they need to know what is meant by a plant name, hence only a name is not enough. A reference, or context, must be provided which gives the name meaning and defines what the taxon encompasses. When we mention a “plant concept” in VegBank, we mean this unique combination of name and reference. For example, one might mention “Carya ovata” according to (reference) “Radford, 1968.” Each plant concept and community concept in VegBank has a VegBank Code which provides unique identification for the plant concept.
Community Concepts function in exactly the same way, except that Community Concepts describe a community type, not a plant taxon.
Plots in VegBank come from the users who decide to contribute their plots. VegBank does not fund plot collection, but is a means for those who do collect plots to share their data. There are two major implications of this:
- We do not guarantee the accurateness of the data in VegBank. Users are allowed to annotate (make notes and reinterpret plants and plots) to share with other users their opinions about the data already in VegBank. [Some of the annotation features are still in development.]
- We need users to share their data. There are many different reasons users share their data. Some are required to share their data by their grants, but don’t want to deal with the hassle of setting up computer servers and software to manage this. Some use VegBank as a means of collaborating with others in data analysis. Others have finished analysis and are eager to find a use for their hard work other than being filed away to collect dust. Still others see the foresight in adding their data to the greater body of knowledge on a public site like VegBank.
Other data, like plants and communities, come from VegBank’s users, but rely heavily on VegBank users like the organizations USDA Plants and NatureServe to provide this data.
VegBank does not have a standard list of taxa or communities. In VegBank, plants and communities have a Party Perspective which defines whether a plant or community is standard or not and what names may be used to describe it. VegBank has no Party Perspective of its own. However, USDA PLANTS 2002 data and NatureServe communities were initially loaded into the database and users are strongly encouraged to map any new plants or communities onto USDA’s or NatureServe’s standards. This allows other users, who may know nothing of your own views, to view information according to the USDA or NatureServe standards.
You can search for plots on the plot tab:
In the top right of the plot table is a very simple search box, where you can specify one or more of the following: plant found on the plot, community to which the plot is interpreted, state/province in which the plot is located, the code assigned by the author to the plot.
A more complex query is in the works…
View our Download Plots page in the About menu to learn more about downloading data with the Plot table. Data can also be downloaded from the vegbankr R package, which underpins this website and serves as an interface to the VegBank API.
VegBank does not have analysis tools. Other groups have done a good job making tools for analysis, and we encourage users to find data in VegBank, then download it, then work on analysis with another program. Users interested in more precise analysis and complete views of the data may also benefit from exploring it via the vegbankr package.
Metadata is plot data that defines not what was measured, but how it was measured. Cover Method and Stratum Method are examples of metadata. Plot size and stem sampling method might also be considered metadata. These data are often considered secondary in importance, but are essential when many different techniques are used to collect plots, as is the case with VegBank data.
To cite VegBank, as a whole or one or more elements, follow the instructions on the Citing Data page in the About menu. That page also shows how to cite a description of VegBank.
A VegBank Code is a unique combination of letters, numbers, and a period which uniquely identify something in VegBank. VegBank Codes are used to identify plots and observations, as well as methods, plant taxa, and community types. This allows communication about these elements to take place so that each party knows that they are mentioning the same thing. VegBank Codes are important when vegbankr and VegBank communicate, because this helps the two align the different types of data, rather than repeating redundant information.
For those who want to know how a VegBank Code works (this is not necessary!), it is broken into two parts, each divided by a period (.). An example VB Code is that of Quercus alba, with reference of USDA 2002 : pc.48413. The first part is the table identifier (i.e. pc for plant concepts), then the record number (i.e., 48413).
We are currently funded by the California Department of Fish and Wildlife (CDFW). We gratefully acknowledge the financial support of CDFW.
Eventually, we’d like to have a feature that allows you to donate to our efforts. Until then, if you have a funding source for VegBank, please contact us at help@vegbank.org. We’d be more than happy to hear about it.
You can get a baisc overview of the application and some common interactions on the Getting Started page in the About menu. If you have further questions feel free to contact us at help@vegbank.org.
You should tell us about what wasn’t working. Just send an email to help@vegbank.org and explain what it is that isn’t working. Please be as specific as possible, i.e. what the URL was when the error occurred, what the search criteria were if you were searching for something, the time and date the error occurred, etc. Users who report errors help us improve the VegBank experience for everyone. Thank you!
One of VegBank’s strengths is that its data are permanently archived. This means that you can cite a dataset or plot in VegBank and others will be able to follow your citation hyperlink to see the same data you saw at the time of citation. This is critical for analytical transparency. In addition, to give credit to the VegBank system, you might consider citing the VegBank software as a key tool in your workflows. Below we provide recommended citations for the various things you might cite in VegBank.
Researchers can create a Vegbank Dataset (a specific named collection of plot observations) using the create_dataset() API function, which in turn mints a citation-friendly DOI for the dataset.
To cite a dataset that is created in VegBank, it is best to use the DOI url for the dataset, which you can get from the ‘Copy Citation’ button in the web interface. That will produce a citation of the form:
Kyle Palmquist (2013): VegBank plot observations: Carolina Vegetation Survey Longleaf Analysis. VegBank. Dataset. doi:10.82902/ZZZZZZZZ.
Once you know the DOI, You can resolve the dataset using any of the following URL patterns:
In addition to datasets, VegBank produces transparent permalinks to other types of records in the system. Right now only a single plot observation, community concept, or dataset can be cited, but we plan to extend citations to the rest of the records soon. Each of these types of record has a unique VegBank Code that can be used to fashion a URI to cite that record. You can find the VegBank Code (the unique identifier for VegBank data) on the table and detail views of different entities.
Once you know the VegBank Code, use the following pattern to create a URL:
https://vegbank.org/cite/[VegBankCode]
Where [VegBankCode] is the VegBank Code of the plot or other data to cite.
| Entity | Citation URL |
|---|---|
| Plot Observation | https://vegbank.org/cite/ob.3736 |
| Community Concept | https://vegbank.org/cite/cc.5728 |
To cite the VegBank database and API service, use:
Jim Regetz, Robert Shelton, Darian Gill, Matthew B. Jones, Dou Mok, Matthew Brooke, Rushiraj Nenuji, Jeanette Clark, Maggie Klope, Michael T. Lee, Robert K. Peet. 2026. VegBank: the open-access vegetation plot database and API of the Ecological Society of America’s Panel on Vegetation Classification. Version 2.1.1. VegBank. doi:10.82902/J1WC7G.
vegbankr client libaryIf you made use of the R tooling in the vegbankr package, you can cite the software package as:
Jim Regetz, Matthew B. Jones, Rushiraj Nenuji, Jeanette Clark, Maggie Klope. 2026. vegbankr: An R API package for the VegBank data system. Version 1.0.0. VegBank. doi:10.82902/J1MW28
To cite the web application that is used to search and display VegBank data, use:
Darian Gill, Jim Regetz, Matthew B. Jones, Michael T. Lee, Matthew Brooke, Robert K. Peet (2026) VegBank Web: A Shiny Web App for Vegetation Plot Data. Version 1.0.0. VegBank. doi:10.82902/J1H59R
To cite the original paper describing VegBank, please use the following citation:
Peet, R.K., M.T. Lee, M.D. Jennings, & D. Faber-Langendoen. 2012. VegBank - a permanent, open-access archive for vegetation-plot data. Biodiversity and Ecology 4: 233-241.
The VegBank web app lets you download up to 20,000 plot observations at a time as a ZIP archive containing several related CSV files. For bulk or programmatic access, consider using the vegbankr R package, which provides full access to all VegBank data without the 20,000-row limit.
.zip file to your computer and extract it.After extracting the archive you will find a README.txt and up to eleven CSV files. Files containing no data for your download are omitted. Each file uses a short VegBank code column as its primary key (e.g. ob_code, to_code).
| File | Primary key | Description |
|---|---|---|
plot_observations.csv |
ob_code |
One row per plot observation — the primary table. All other files link back to it via ob_code. |
taxon_observations.csv |
to_code |
Plant taxa recorded on a plot. Joins to plot_observations via ob_code. |
taxon_interpretations.csv |
ti_code |
Assignments of plant concepts to taxon observations. Joins to plot_observations via ob_code, taxon_observations via to_code, and plant_concepts via pc_code. |
taxon_importances.csv |
tm_code |
Cover and other importance metrics for a taxon observation, optionally within a stratum. Joins to plot_observations via ob_code, taxon_observations via to_code, and strata via sr_code. |
stem_counts.csv |
sc_code |
Stem counts associated with an importance record. Joins to plot_observations via ob_code, taxon_observations via to_code, taxon_importances via tm_code, and strata via sr_code. |
plant_concepts.csv |
pc_code |
Plant concept reference table. Reach it from taxon_interpretations via pc_code. |
strata.csv |
sr_code |
Vegetation strata (layers) defined for a plot observation. Joins to plot_observations via ob_code. |
community_classifications.csv |
ci_code |
Community interpretation events for a plot. Each classification event (cl_code) may have multiple interpretations. Joins to plot_observations via ob_code and community_concepts via cc_code. |
community_concepts.csv |
cc_code |
Community concept reference table. Reach it from community_classifications via cc_code. |
projects.csv |
pj_code |
Projects under which observations were made. Joins from plot_observations via pj_code. |
parties.csv |
py_code |
People and organizations contributing to plot observations. |
README.txt |
— | Download metadata, applied filters, file descriptions, and citation. |
ob_code is the common key that links most tables back to plot_observations.csv. It contains a VegBank Code of the form ob.XXXXX.
library(readr)
library(dplyr)
plots <- read_csv("plot_observations.csv")
taxon_obs <- read_csv("taxon_observations.csv")
taxon_interp <- read_csv("taxon_interpretations.csv")
plants <- read_csv("plant_concepts.csv")
comm_class <- read_csv("community_classifications.csv")
comm_conc <- read_csv("community_concepts.csv")
strata <- read_csv("strata.csv")
importances <- read_csv("taxon_importances.csv")
# All taxa observed on each plot, with plot metadata
plots_with_taxa <- plots |>
left_join(taxon_obs, by = "ob_code")
# Resolve taxon observations to named plant concepts
taxa_named <- taxon_obs |>
left_join(taxon_interp, by = "to_code") |>
left_join(plants, by = "pc_code")
# Cover/importance values per taxon per plot (optionally per stratum)
taxa_cover <- taxon_obs |>
left_join(importances, by = "to_code") |>
left_join(strata, by = "sr_code")
# Community concepts assigned to each plot
plots_with_community <- plots |>
left_join(comm_class, by = "ob_code") |>
left_join(comm_conc, by = "cc_code")
import pandas as pd
plots = pd.read_csv("plot_observations.csv")
taxon_obs = pd.read_csv("taxon_observations.csv")
taxon_interp = pd.read_csv("taxon_interpretations.csv")
plants = pd.read_csv("plant_concepts.csv")
comm_class = pd.read_csv("community_classifications.csv")
comm_conc = pd.read_csv("community_concepts.csv")
strata = pd.read_csv("strata.csv")
importances = pd.read_csv("taxon_importances.csv")
# All taxa observed on each plot, with plot metadata
plots_with_taxa = plots.merge(taxon_obs, on="ob_code", how="left")
# Resolve taxon observations to named plant concepts
taxa_named = (taxon_obs
.merge(taxon_interp, on="to_code", how="left")
.merge(plants, on="pc_code", how="left"))
# Cover/importance values per taxon per plot (optionally per stratum)
taxa_cover = (taxon_obs
.merge(importances, on="to_code", how="left")
.merge(strata, on="sr_code", how="left"))
# Community concepts assigned to each plot
plots_with_community = (plots
.merge(comm_class, on="ob_code", how="left")
.merge(comm_conc, on="cc_code", how="left"))
obs_count column that appears in some reference tables (e.g. plant_concepts, community_concepts) reports the total count of observations in VegBank, not the count specific to your download.strata.csv will not appear in the ZIP.