Citable Code

The easiest way to refer to your code is to send/post the URL of your repository. However, if you need to reliably refer to a specific version of your code in the long run, for example for scientific writing, this is not really viable, because URLs can change.
Another possibility is to download your repository as a ZIP or TAR.GZ archive (see section Clone in Clone & Commit via Web) and share this file.
The third option, which actually complements the second, is to assign a Digital Object Identifier (DOI) to your code. Having a DOI for your code means that everybody can cite your code using this standard and permanent identifier. Assigning a DOI for citation is routine in the academic world.

This page will show you how to do just that. The process can be decomposed in four steps.

Create a release of your repository

Creating a release is optional, but recommended. A release will make it clear what version of your code you want to share/cite. Any further edits to your code will not be included in the release. In other words, it's good practice to share/cite a release with fixed code rather than the always changing code of your repository.

You can find instructions on the Tags and Releases article.

Download the ZIP archive

If you created a release, download the ZIP archive of the source code on the Releases tab of your repository, as shown in the previous screenshot.

If not, you can simply download the ZIP archive of the repository (see section Clone in Clone & Commit via Web).

Upload the ZIP archive to an online repository

There are many online repositories made specifically for research, e.g. Zenodo, Figshare, Dryad, and OSF. Others might be more appropriate for other uses.

Upload the ZIP archive to one of them, and follow the steps there to assign a DOI. Be sure that you add the URL of your Codeberg repository in the information of the record on the online repository, so that everyone accessing the record can easily find your Codeberg repository (and you!). In general, add as much information as applicable.


It should be possible to write an integration between Codeberg and one of the DOI repositories to make citing code a lot smoother. If you happen to be interested, you may want to have a look at #295.

Share the DOI

Finally, get the DOI from the online repository. This is the permanent URL you can share and use for citation in scientific writing.

A DOI has the form It has three parts:

  •, the proxy is always there as is. It is sometimes omitted for compactness.
  • repoID, the prefix is specific to the online repository. Its format is usually 10.XXXX.
  • recordID, the suffix identifies your record. Its format is specific to the online repository.

Hey there! 👋 Thank you for reading this article!

Is there something missing, or do you have an idea on how to improve the documentation? Do you want to write your own article?

You're invited to contribute to the Codeberg Documentation at its source code repository, for example, by adding a pull request or joining in on the discussion in the issue tracker.

For an introduction on contributing to Codeberg Documentation, please have a look at the Contributor FAQ.

© Codeberg Docs Contributors. See LICENSE