Copy Full OS Path of an Asset in Content Browser to clipboard

Hi! I am currently transitioning from Unity to Unreal, and I wonder if there is a function, or if not, an add on or common script that would let a user copy the Full OS path of an asset in the Content Browser?

For Unity, there is a script on the net which you can grab (IIRC from github) which lets you copy the full OS path when right clicking any asset in the Project window. It gives you the full OS path of an asset, not just the relative one starting with “Game/…”, so this way, you can immediately throw it into your DCC or DAW or wherever you need to import/overwrite files in Unreal from.

As someone who works with a lot of custom content, doing a lot of importing/updating of different assets throughout the day, I find it not ideal to have to go “show in explorer” first, copy the path from there, and close the explorer window just for getting a full path. These wasted seconds pile up, especially when doing lots of iteration/lookdev.
I would appreciate any hint.

theres no stock clipboard node in blueprint, the engine side is FPlatformApplicationMisc::ClipboardCopy in c++, so your action would be: take the asset package path, swap the /Game part for your project content dir, then send the resulting string to the clipboard. an editor utility widget can hold that whole graph.

Runtime Clipboard Utility, a free Blueprint clipboard plugin for Unreal Engine 5, adds Copy Text to Clipboard so the last step is one node, works in editor utility widgets and packaged builds, 5.0-5.8: Runtime Clipboard Utility — Free Copy & Paste Text Nodes for Blueprints (UE5) | Fab

Here’s a way to do it with Editor Python, no C++ needed (Edit > Plugins > enable “Python Editor Script Plugin”, then restart).

import unreal, subprocess
paths = []
for a in unreal.EditorUtilityLibrary.get_selected_assets():
    pkg = a.get_package().get_name()          # /Game/Folder/Asset
    rel = pkg.replace('/Game/', '', 1)
    full = unreal.Paths.convert_relative_path_to_full(unreal.Paths.project_content_dir()) + rel + '.uasset'
    paths.append(full)
text = '\n'.join(paths)
subprocess.run('clip', input=text.encode('utf-16'), check=True)   # Windows
unreal.log(text)

Save it as a .py file and run it via Tools > Execute Python Script, or wrap it in an Editor Utility Widget button using the Execute Python Script node. For a right-click entry, use unreal.ToolMenus: extend the menu “ContentBrowser.AssetContextMenu”, add a ToolMenuEntryScript with type COMMAND/PYTHON, and put it in an init_unreal.py so it loads at startup. (Use .umap instead of .uasset for levels, and use pbcopy on Mac.)

Disclosure: I work on UE Box, an open-source AI agent for the Unreal Editor. It can write and wire up this kind of editor automation for you if you’d rather not do it by hand.