> For the complete documentation index, see [llms.txt](https://docs.overleaf.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.overleaf.com/accounts-and-security/overleaf-labs/live-experiments.md).

# Live Experiments

{% hint style="danger" %}
Labs experiments are provided as-is, without any guarantee of stability. We recommend avoiding them for critical or deadline-sensitive projects.
{% endhint %}

These experiments are not final features and may change or be removed. See our [Labs documentation page](/accounts-and-security/overleaf-labs.md) for more information.

{% hint style="warning" %}
The following documentation may not reflect the experiment in its current form. We try to keep it as up to date as possible but some features change fast!
{% endhint %}

<details>

<summary><strong>BibTeX visual editor</strong></summary>

The BibTeX visual editor is an in-editor panel that lets you view, create, edit, and delete bibliography (.bib) file entries without needing to write raw BibTeX code.

## Managing your entry list

The entry list shows all your parsed BibTeX entries in a simple table. You can sort the list by key, type, author, title, or year to find exactly what you're looking for.

### Adding and editing entries

To add a new reference, just click the Add entry button. If you want to change an existing one, click on its row to open the entry form. This form includes all the standard BibTeX fields you might need.

### Importing references

You can easily bring in new data by clicking the Import button. You can either paste raw BibTeX text or upload a file, and we'll merge those entries into your current project.

### Deleting entries

If you need to tidy up your file, you can delete multiple entries at once using the checkboxes:

* **Select individual entries**: Use the checkbox next to any row.
* **Select everything on a page**: Click the checkbox in the header. If you've only selected a few items, clicking this will select the rest of the page for you.

When you've selected your entries, a Delete button will appear in the toolbar. Click it to remove all selected entires.

{% hint style="success" %}
Your selections stay active even when you navigate to a different page.
{% endhint %}

## Permissions

Your ability to edit depends on your project permissions. If you have Owner or Collaborator (with edit access) status, you can add, change, or delete entries. Read-only users can see the list but won't be able to make changes.

</details>

<details>

<summary><strong>Rolling TeX Live releases (advanced)</strong></summary>

This experimental version is primarily for testing changes to TeX Live, packages, and previewing new accessibility features before they’re compiled into our annual TeX Live release.

Note that these images change month to month and are untested by our team. Important projects should continue to be built on our yearly release to avoid issues that may occur when the monthly build changes.

{% hint style="info" %}
Once you have joined, you will need to [select a the rolling TeX Live version](/getting-started/recompiling-your-project/selecting-a-tex-live-version-and-latex-compiler.md).
{% endhint %}

Find out more on our [TeX Live documentation page](/troubleshooting-and-support/tex-live.md).

</details>

<details>

<summary><strong>Python Script Runner</strong></summary>

The Python Script Runner lets you write and run Python scripts directly in your Overleaf project. Any files your script generates—figures, CSVs, or other outputs—are saved to the file tree and are available to use in your LaTeX document.

## Activate the Python Script Runner

To use the Python Script Runner, open any `.py` file from your project's file tree. The editor switches to Python mode and a **Run** button appears.

If your project doesn't have a `.py` file yet, create one using the **New file** button in the file tree.

## Write and run a script

1. Open a `.py` file from the file tree.
2. Write your Python code in the editor.
3. Select **Run** to execute the script.

To stop a script while it's running, select **Stop**.

## Understand the output panel

When you run a script, the output panel opens below the editor. It shows:

* **Standard output:** text printed by your script, such as the result of `print()` statements
* **Errors:** if your script fails, the output panel shows what went wrong. There are two types:
  * **Environment errors:** for example, a package that isn't available in the runner. Check the list of [supported packages](https://pyodide.org/en/stable/usage/packages-in-pyodide.html) before importing.
  * **Code errors:** syntax mistakes or runtime errors in your script, such as a `NameError` or `TypeError`

## Use files from the file tree as inputs

Your script can read files already in your project—for example, a `.csv` you've uploaded:

```python
import csv

with open("data.csv") as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)
```

## Save output files to the file tree

Any files your script writes are saved to the project file tree automatically. For example, a figure saved with `plt.savefig("output.png")` will appear in the file tree and can be included in your LaTeX document using `\includegraphics{output.png}`.

## Supported packages and Python version

The Python Script Runner uses [Pyodide](https://pyodide.org/en/stable/usage/packages-in-pyodide.html) 0.29.3, which runs Python 3.13.2. A full list of supported packages is available on the [Pyodide packages page](https://pyodide.org/en/stable/usage/packages-in-pyodide.html).

## Known limitations

* Scripts run in your browser using your local system resources. Large or computationally expensive scripts may be slow or cause the tab to become unresponsive.
* Only packages available in Pyodide are supported. Packages that require native code or are not in the Pyodide distribution cannot be installed.

## Give feedback

The Python Script Runner is an early experiment and your feedback helps shape where it goes. Share what's working, what isn't, and what you'd like to see using our [feedback survey](https://forms.gle/RSQTZWfFd5AvzZX4A).

If you think the experiment has caused data loss or a serious issue, please also [contact Support](https://www.overleaf.com/contact) directly.

## Leave the experiment

You can leave this experiment at any time from the [Labs page](https://www.overleaf.com/labs/participate). Your projects and settings will not be affected.

</details>

<details>

<summary><strong>New Project Sharing Experience - Manage access</strong></summary>

Introducing a more streamlined way to share your projects. Dive into each of your collaborator's permissions in the Manage access menu.

{% stepper %}
{% step %}

#### Set up sharing

There are two access methods:

* **Email invite** – directly invite a collaborator using their email address.
  1. Type the email(s), or choose from a list of previous collaborators.
  2. Select the permission level you'd like to assign them.
  3. Click **Invite**.
* **Link sharing** – send or embed a link.
  1. Turn on link sharing for the project by selecting **Via sharing links** from the dropdown menu:

     <figure><img src="/files/3WKKx3ainIEdXc3W4TkB" alt="The drop down menu showing Via sharing links selected instead of Only invited people (which is the default)." width="274"><figcaption></figcaption></figure>
  2. You can revoke link sharing at any time by switching back to **Only invited people**.
  3. Permissions for collaborators who have already joined the project are retained. You can update their permissions through the [Manage access](#manage-access) menu.
  4. Click the **Copy** button next to either the **edit** (read-and-write) link or the **view** (read-only) link:

     <figure><img src="/files/EvcZRWacaC1ilDgU9DIY" alt="Two link options, one edit link and one view link. They each have buttons to copy." width="375"><figcaption></figcaption></figure>
  5. Share the link anywhere by pasting from your clipboard.
     {% endstep %}

{% step %}

#### Manage access

Once an invite has been sent, or a collaborator has joined from a link, the <img src="/files/Wa3dcWcxlekgD7UfEBcx" alt="Manage access button" data-size="line"> button appears. Use this to fine-tune individual permissions:

1. Click **Manage access**.
2. Choose the corresponding toggle next to each collaborator to update.
   1. If the collaborator has already joined the project, you will see options to change their role to **Owner**, **Editor**, **Reviewer**, or **Viewer**. You can also **Remove** their access to the project:

      <figure><img src="/files/eIjqGaAfj80XbeEc0MvF" alt="" width="375"><figcaption></figcaption></figure>
   2. If the invite is still pending, you will see the options to **Resend** or **Revoke** the invite:

      <figure><img src="/files/KfNjqJy2VX1LBZ2RjaWu" alt="" width="375"><figcaption></figcaption></figure>

{% endstep %}
{% endstepper %}

</details>

<details>

<summary><strong>New Project Sharing Experience - Request access</strong></summary>

Don't have the access you want for a project? Request it right from the toolbar.

{% stepper %}
{% step %}

#### Open the project

Open any project you have previously joined.

{% hint style="info" %}
Note: The owner of the project needs to be enrolled in the Labs experiment ([New project sharing experience](https://www.overleaf.com/labs/participate)).
{% endhint %}
{% endstep %}

{% step %}

#### Click the Request access button&#x20;

<figure><picture><source srcset="/files/nsK0xLI0x7nzzT9iY56r" media="(prefers-color-scheme: dark)"><img src="/files/GCfc2ok0goDJbnh9PVUk" alt="" width="284"></picture><figcaption></figcaption></figure>

Depending on your existing access you will have the following options:

* **Viewer** - Users with **Viewer** permissions will be able to request **Reviewer** or **Editor** permissions.
* **Reviewer** - Users with **Reviewer** permissions will be able to request **Editor** permissions.
  {% endstep %}
  {% endstepper %}

### Managing requests

{% stepper %}
{% step %}

#### Notification

The project owner will be notified of the access request by a badge on the Share menu for the project and by email.

<figure><picture><source srcset="/files/yb6au8keiVx9cf0MVbEc" media="(prefers-color-scheme: dark)"><img src="/files/PnFDyuM9NTSQ2g4cXYhR" alt="The Share button has an orange notification badge that says 1 for 1 access request pending." width="247"></picture><figcaption></figcaption></figure>
{% endstep %}

{% step %}

#### Update permissions

Use the **Manage access** menu to accept or decline the request.&#x20;

<figure><img src="/files/qJ8cA1d7uApVcitRJPpH" alt="The Manage access menu showing a Requestor wanting updated access. There&#x27;s a toggle for the owner to adjust and then re-share the project or to decline the request." width="375"><figcaption></figcaption></figure>
{% endstep %}

{% step %}

#### Confirmation

The project owner will get confirmation of the updated access within the Share menu. The requestor will receive an email notification with the owner's decision.
{% endstep %}
{% endstepper %}

</details>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.overleaf.com/accounts-and-security/overleaf-labs/live-experiments.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
