Skip to content
streamneo.
Setup Guides15 min read

Show the Current Playlist Filename in an OBS Text Overlay

Set up an OBS VLC playlist and text overlay, then choose a TUNA or script handoff that displays a filename rather than title metadata.

sn.
StreamNeoPublished 4 October 2026
Worth sharing?

To show the current item’s filename on a YouTube Live stream, play your files through an OBS VLC Video source and place a separate OBS text source over it. OBS does not automatically turn the playlist’s current filename into an overlay: you need a plugin or script to pass the current item’s information to text that OBS can display.

The key choice is what “name” means. A media file can have a filename such as morning-bhajan-03.mp4 and embedded title metadata such as Morning Prayer; those are different values, and your handoff must deliberately select the one you want.

Add a VLC Video playlist source

In OBS, add a VLC Video source to the scene that will carry the playlist. Its settings let you add multiple media items and choose playlist behaviour, including whether to loop. Add the local video files in the order you want them played, then check the preview and audio before building the overlay. The OBS Media Sources guide documents VLC Video and its requirements.

VLC must be installed for the VLC Video source to work. OBS’s guide specifies a 64-bit VLC installation when using 64-bit OBS. Match the application architecture rather than installing VLC by guesswork; if OBS cannot see the VLC source or its media, first check that VLC is installed in the expected version and that the files are readable from the machine running OBS.

Keep the playlist small while setting up the handoff. Use two or three files whose names are easy to distinguish, and note their exact filenames. This makes it easier to see whether the displayed text changes at the right time and whether it is showing a filename or something else. Once the behaviour is clear, replace the test items with the full playlist.

A VLC playlist is not the same as a sequence of separate OBS scenes. The VLC source advances among its media items, while the text source remains a separate layer in the scene. That separation is useful: you can position, style, hide, or resize the label without editing each video, but you must still arrange a way to update its contents as the playlist advances.

Before adding automation, confirm that the playlist itself plays in the right order and that the scene is the one being sent to YouTube. A working overlay cannot fix a source that has stopped, is hidden behind another layer, or is absent from the active scene. If the wider plan is to loop recordings rather than present a live camera, the considerations in looping old podcast episodes on YouTube Live may help you check the playlist use case.

Choose filename versus title metadata

A file’s name, its playlist label, and its embedded title are not interchangeable. VLC represents the media path and title information separately. A video named lesson-04.mp4 might carry a title such as Fractions: Part Two; a player or plugin displaying title metadata can therefore show a value that is useful to viewers but does not meet a strict filename requirement.

Decide what viewers should see before choosing a handoff. If you want the actual file identifier, such as lesson-04.mp4, the process must obtain the item path and extract its final component. If you want a polished programme name, title metadata may be better, but you should not describe that result as the filename. A third possibility is a curated display label maintained separately, which can avoid exposing internal naming conventions.

Requirement Value to display Main check
Show the file identifier Final component of the item path, including the extension if desired Confirm separators and URL encoding are handled correctly
Show the programme title Embedded title metadata, if present Check that it is populated and not mistaken for the filename
Show a viewer-friendly label A separately maintained label Keep the label associated with the correct playlist item

Make a test file where the filename and embedded title intentionally differ. For example, use a filename like test-chant.mp4 with title metadata set to Evening Chant. If the overlay says Evening Chant, the handoff is reading the title; if it says test-chant.mp4, it is reading the filename. This simple test is more reliable than guessing from files where both values happen to match.

Also choose whether the extension belongs in the display. For a small channel whose filenames double as catalogue IDs, keeping .mp4 can make the value unambiguous. For a viewer-facing lower-third, removing the extension may look cleaner. Make that transformation explicit in the handoff instead of relying on a plugin’s undocumented formatting choice.

Use TUNA to write the current item to text

TUNA is one route to try when you want a plugin to write details about the playing media to a text file. The basic design is straightforward: the plugin observes the current item, writes a value to a file, and an OBS text source reads that file. The file is the handoff between the playlist information and the text rendered in the scene.

Treat this as a community-reported workflow, not an official OBS guarantee. In an OBS forum discussion, a member described TUNA as writing information about the playing file to a text file that OBS could display. A separate discussion includes a report of it not working for one person’s video case. These accounts show why the approach is plausible, but not that every combination of OBS version, plugin version, file format, and operating system behaves alike. See the OBS forum thread about overlaying a filename and the discussion about VLC filenames at start.

If you choose TUNA, obtain it from its official project source and read the installation instructions for your operating system and OBS version. Do not assume that a plugin found in an old forum attachment or video description is current. The research behind this guide does not verify a current TUNA download location or universal video compatibility, so check the project’s own page and test it before relying on it in a live broadcast.

Configure the plugin to write the field you actually need, if the plugin exposes that choice. Where it offers only general media information, inspect the output file while each test item plays. Open it in a plain-text editor and check whether it contains a full path, a filename, a title, or additional fields. If it writes title metadata when you need a filename, changing the appearance of the OBS text source will not correct the underlying value.

Keep the output file in a predictable location and avoid editing it while the plugin is writing. Note the full path, then point an OBS text source at that exact file. The plugin’s role is to produce the changing text; the OBS source’s role is to render it. If either side is configured to a different path, the overlay may show stale text or nothing at all.

Connect a text file to an OBS text source

Add a text source to the same scene as the VLC Video source. In its properties, select the option to read from a file, then browse to the text file written by TUNA or your script. This is different from typing a fixed string into the source: a fixed string will remain fixed until you replace it yourself. Arrange the text above the video source in the scene’s source list, then set its font, size, colour, and position so it remains legible over the footage.

Start with an uncomplicated label treatment. A filename can be long, so place it where it does not cover faces, subtitles, lyrics, or important parts of a news loop. Consider a background strip or outline if the video varies in brightness. Preview several different filenames: a short name may look fine while a longer one runs into the edge of the frame. Decide whether to wrap, truncate, or allow a second line, and make sure that choice does not hide the item identity viewers need.

Check the file path from the perspective of the application that will run OBS. A path that exists on your desktop account may not exist under a different account, drive letter, mounted volume, or operating system. If you move the text file after configuration, update the source’s file selection too. Keep the playlist media and handoff file in locations that remain available for the full broadcast session.

If the file is blank at startup, decide what the audience should see before the first playlist change. You can populate it with a neutral label such as “Now playing” or the first item’s display name, then confirm that the plugin or script replaces it. A blank overlay is not necessarily a broken text source; the source may simply be reading an empty file. Conversely, a stale filename may mean the file is readable but the handoff is no longer updating.

Use a clear naming convention for the handoff file, such as current-item.txt, and do not confuse it with a similarly named playlist or subtitle file. Keeping one small text file for the current item makes troubleshooting easier than having the overlay depend on a large playlist export whose format may change.

Use Lua or Python for a custom handoff

If TUNA does not provide the field or behaviour you need, a custom script can implement the same handoff: detect which playlist item is current, obtain its path or metadata, convert it to the intended label, then write that label to a text file read by OBS. OBS supports Lua and Python scripting. Its Scripting Guide explains the supported scripting environment, but it is not a ready-made recipe for extracting a VLC playlist filename.

A custom script has more room for deliberate rules. It can strip the path and keep the filename, remove only a final extension, substitute a display label from a mapping, or write a fallback when there is no current item. It can also avoid showing a full local directory path, which may be useful if your folders contain personal or operational details. Each transformation should be a conscious choice, especially if viewers depend on exact identifiers.

The harder part is observing the playlist transition correctly. A script must work with the OBS version and the relevant source/API behaviour, and VLC playlist details may not map neatly to a single title field. The official scripting documentation establishes that Lua and Python are supported; it does not promise a particular event callback or provide a complete filename-overlay implementation. Avoid copying an unverified code snippet into a live scene and assuming it will survive a long playlist.

If you write or commission a script, keep the stages separate and testable. First verify that it can identify the current item in your environment. Then verify the conversion from path to display value. Next confirm that the file changes on item transitions and that the text source picks up the change. Finally, test the scene while OBS is streaming or recording in the same mode you intend to use. This separation makes it easier to locate whether an error is in item detection, string handling, file writing, or rendering.

A script is most appropriate when the displayed value needs consistent cleanup, when you need fallback behaviour, or when plugin output does not match the requirement. It also creates a maintenance responsibility: OBS, VLC, operating-system, or script changes can affect the handoff. Keep a copy of the script and its settings with the channel’s operating notes, and retest after updating the software used for the playlist.

Handle paths and remote items

A local media path often ends in a familiar filename, but path formats differ. Windows paths commonly use backslashes, while Unix-like paths use forward slashes. A script that extracts the text after only one kind of separator can return the entire path on another system. Normalise separators or use the path-handling functions appropriate to the scripting environment, then test on the operating system that actually runs your OBS session.

A URL is not a filesystem path. A remote item may have query parameters, a fragment, or a URL-encoded name; the last slash-separated component might not be the media’s actual filename. For example, spaces in a URL can appear as %20, and other characters may also be encoded. If your requirement is a readable label, decode the relevant URL component deliberately and check that decoding does not turn separators or reserved characters into an unintended path boundary. If the exact URL identity matters, preserving the encoded form may be more accurate than prettifying it.

Do not assume a remote playlist item exposes the same metadata as a local file. A stream URL may have no meaningful filename at all, while its title could come from a separate source. Define a fallback such as a curated label or “Live stream” rather than displaying a long address or an empty string. If you need to show a true filename, confirm that the remote media actually provides one in the form your plugin or script can read.

Test filenames containing spaces, non-Latin characters, punctuation, and multiple dots. A file called raag-evening.v2.mp4 should not accidentally be reduced to raag-evening; removing everything after the first dot is not the same as removing the final file extension. For a channel serving Hindi or other Indian-language audiences, also confirm that characters display correctly in the chosen font and text-file encoding. Use the same encoding on the writer and reader, typically UTF-8 where both support it.

If you run a playlist from removable storage or a network-mounted folder, a drive disconnect can affect both playback and the path-to-filename handoff. Keep the file available for the entire session and check that the account running OBS can access it. The practical checklist for content creators can help you include these small checks in a repeatable pre-broadcast routine.

Test updates between playlist items

Test transitions rather than only testing the first item. Start playback on one file, wait for the next item to begin, and verify that the overlay changes to the corresponding value. Repeat across a few transitions, including a file whose embedded title differs from its filename. That shows whether the handoff updates at the point you expect and whether it reads the right field, not merely whether a label appears on screen.

Watch for timing differences. A handoff may update just before or after the video changes, and a text source may take a moment to reflect file contents. A brief mismatch can matter if your content uses tightly matched titles, lyrics, or lesson numbers. Decide whether a short transition delay is acceptable and test the actual behaviour rather than assuming updates are instantaneous.

Use a controlled test sequence: a short filename, a long filename, one with spaces or non-English characters, and one with distinct title metadata. Check the rendered text and the text file itself after each transition. If the file changes but the overlay does not, review the OBS text source’s file selection and refresh behaviour. If the file does not change, troubleshoot the plugin or script before adjusting the text styling.

Test failure and recovery as well. Temporarily make one test item unavailable or use a known unsupported test case, then see what value remains visible. You do not need to create a fault during a public broadcast; perform it in a local recording or private test. A stale filename can mislead viewers into thinking the wrong programme is playing, so choose whether the system should clear the label or show a neutral fallback when the current item cannot be identified.

Before using the overlay on a long-running channel, review the source order, file path, and current output after restarting OBS. If the handoff depends on launching a plugin or script manually, record that step. Channels built around recorded teaching material may also benefit from checking the media itself before it goes into rotation; see how to check recorded classes for a 24/7 YouTube stream.

A disciplined test does not prove the overlay will never fail. It does establish what happens with your OBS build, VLC installation, plugin or script, file types, and operating system before viewers depend on it. Re-run the same checks after changes to those components, and keep a manual way to hide the text source if the displayed value becomes misleading.

Choose the handoff that fits

For a straightforward setup, try TUNA if its current documentation supports your environment and the output field is suitable. It may reduce the amount of code you need to maintain, but reports are anecdotal and compatibility should be verified locally. For exact filename extraction, custom fallback rules, URL handling, or a curated display name, a script gives you control at the cost of implementation and ongoing testing.

Approach Useful when Trade-off Validate
TUNA plugin Its output matches the field and format you need Behaviour may vary across versions and media cases Confirm its output file and transition updates
Lua or Python script You need explicit parsing and display rules Requires script setup and version-specific testing Confirm item detection, path parsing, and file updates
Fixed OBS text The label never needs to change automatically Requires manual edits as the playlist changes Check the label before each relevant scene or item

There is no evidence here for a controlled reliability comparison or a guaranteed setup time between these routes. Choose based on the actual output requirement and your comfort maintaining the handoff. If you are preparing a channel that mainly needs a reliable rotation of recorded video rather than a filename overlay, separate that broader operating question from this OBS label: the guide to running a 24/7 rain channel from a home PC covers a different workflow and its practical considerations.

Keep the overlay’s purpose modest. It can tell viewers which file or programme label is playing, but it does not establish that the video is current, that its title is accurate, or that the stream is healthy. Check the YouTube output itself during setup and keep the displayed label aligned with the content you intend to show.

Before committing, compare the operating options on the pricing page. When the file and channel are ready, start free — 24-hour trial, no card.

FAQ

Does OBS automatically show the current VLC playlist filename?

No. The VLC Video source plays playlist items, but OBS does not automatically create and update a filename overlay from that source. Use a plugin or a script to write the value to a text file, then read that file with a separate OBS text source.

Why does my overlay show a title instead of the filename?

The media’s embedded title metadata can differ from its path and filename. Inspect the handoff output and test with a file whose title is deliberately different from its name. If you need the filename, extract the final path component rather than displaying a title field.

Can I show the name of a remote playlist item?

Sometimes, but a remote URL may not expose a useful filename, and its last URL component may be encoded or include query data. Decide whether you need the encoded URL, a decoded component, metadata, or a curated label, then test that exact case. Use a fallback where no meaningful filename exists.

Should I use TUNA or a custom script?

Try TUNA if it supports your OBS setup and produces the field you need, but verify it with your own media because community reports are not a compatibility guarantee. A Lua or Python script offers explicit control over filename parsing and fallbacks, but the OBS scripting guide does not provide a ready-made overlay recipe. Choose the route you can test and maintain.

YOU’VE REACHED THE END

Keep the ideas coming.

More guides, useful tools and a little help for your next broadcast.

Back to the journal ↗
YOUR NEXT READ

A little more to explore.

More Setup Guides guides ↗ · All topics ↗