Follow our getting started guide. In short: create an OSF project, link your OSF account to DataPipe, set up an experiment, and add a few lines of code to your study to send data through DataPipe to the OSF. The easiest way to get started is to sign in to DataPipe with your OSF account, which automatically authorizes DataPipe to write data on your behalf.
No. You need a separate service to host your experiment online (e.g., GitHub Pages, Netlify, or university hosting). DataPipe only handles sending data to the OSF, so you do not need to configure any backend or server components yourself.
GitHub Pages is a free option. Select "project site" and "start from scratch" in their guide.
No. DataPipe routes your data to the Open Science Framework but does not keep a copy. Data passes through DataPipe for optional validation and is then sent directly to your OSF project.
DataPipe is free to use.
The expensive parts of running an online experiment — hosting files and storing data — are handled by free services like GitHub Pages and the OSF. DataPipe is a lightweight bridge between them, which makes it inexpensive to operate.
DataPipe is hosted on Google Firebase. Current resource consumption is less than $1 per month. The jsPsych Open Collective account has funding reserves to sustain the service, and we aim to keep costs and available funds transparent so you can judge the service's long-term viability. If you donate a few dollars, you will likely cover the lifetime cost of providing DataPipe to you.
DataPipe does not store or log your data. Once data reaches your OSF project, visibility depends on your OSF settings. If the receiving component is private, only you and your collaborators can see the data. If it is public, anyone can.
There are a few risks to be aware of:
When enabled, DataPipe checks incoming data before sending it to the OSF. You can validate that files are well-formed JSON or CSV, and you can specify a list of required columns or fields that must be present. For JSON arrays (like jsPsych output), DataPipe checks whether the required fields appear in at least one object across the array.
Invalid files are rejected and not sent to the OSF. Rejected data cannot be recovered. This feature is designed to block malicious submissions, not to catch errors in legitimate data.
Base64 data collection lets you send binary files — like audio recordings, video, or images — encoded as base64 strings. DataPipe decodes the string and stores the resulting file in your OSF project. Each request sends one file at a time.
Validation is not currently supported for base64 data, so enabling this feature carries additional risk. We recommend keeping it active only while you are collecting data.
When enabled, DataPipe assigns condition numbers sequentially. It returns a number from 0 to n−1, where n is the number of conditions you configure. For example, with 3 conditions the sequence is 0, 1, 2, 0, 1, 2, and so on. If your design has multiple factors, set n to the total number of unique cells and map each number to the appropriate factor levels in your experiment code.
When enabled, DataPipe generates a metadata file describing your data and its variables, following the Psych-DS specification. The file is stored in your OSF project as dataset_description.json and is updated automatically after each session.
One-click authentication lets you sign in to DataPipe with your OSF account. DataPipe then manages your authorization tokens automatically, including refreshing them when they expire. This is the recommended approach for most users.
The alternative is a personal access token, which you create on the OSF and paste into DataPipe. This gives you direct control but requires you to manage the token yourself. Both methods store tokens encrypted.
If you use DataPipe to collect data, please cite the following paper:
de Leeuw, J. R. (2024). DataPipe: Born-open data collection for online experiments. Behavior Research Methods, 56(3), 2499–2506. https://doi.org/10.3758/s13428-023-02161-x