# Project Organizer

Organizes and restructures Unity project assets using profile-based folder templates and extension mappings.

{% embed url="<https://assetstore.unity.com/packages/tools/utilities/project-organizer-322966>" %}

{% tabs %}
{% tab title="Overview" %}
**Project Organizer** helps you keep large Unity projects clean and maintainable by organizing assets automatically using configurable rules.Assets are scanned using Unity’s AssetDatabase (not direct disk access), ensuring safe and reliable behavior even on large projects and version-controlled repositories.Organization rules are stored in **profiles**, allowing multiple setups depending on project needs (prototype, production, client delivery, etc.). Each profile defines:

* Extension-to-folder mappings
* Included and excluded folders
* File extensions to scan
* Folder templates created automatically before organizing

The tool includes a **Dry Run mode** to preview changes before applying them, and a robust **Undo system** to safely revert the last organization operation if needed.Designed as a pure Editor tool, Project Organizer focuses on safety, predictability, and performance:

* No runtime impact
* No fragile filesystem operations
* No irreversible actions without preview
  {% endtab %}

{% tab title="Installation" %}
After importing the package through the Unity Asset Store or via the Package Manager, the tool becomes available in the Unity Editor under:

**Tools > Project Organizer**

No additional configuration is required to initialize the window. The tool runs entirely inside the Editor environment and has no runtime dependencies.
{% endtab %}

{% tab title="Quick Start" %}
Open the Project Organizer window from the Tools menu. Upon first use, select or create a profile. Built-in presets are available for common project types, including general-purpose, 2D, 3D, and game jam structures.

Once a profile is selected, initiate a scan. The tool will search for assets that match the extensions defined in the profile configuration while respecting included and excluded directories.

By default, Dry Run mode is enabled. In this state, the tool generates a complete reorganization plan without performing any file operations. This plan includes folder creations, intended asset moves, and potential conflicts. Review the output carefully before applying changes.

When satisfied with the simulated result, disable Dry Run and execute the organization process. Assets will be moved in batch using Unity’s `AssetDatabase` API, ensuring that references remain valid.
{% endtab %}

{% tab title="Workflow" %}
Project Organizer operates through a deterministic sequence.

A profile defines the organizational rules. This includes the list of file extensions to scan, their destination folders, as well as directories to include or exclude. Profiles are implemented as ScriptableObjects, allowing reuse across projects.

During the scanning phase, the tool queries Unity’s asset database for matching files within permitted paths. It constructs an internal movement plan but does not immediately alter the project.

In Dry Run mode, the tool reports what would happen without creating folders or moving files. This stage is designed to provide visibility and prevent unintended structural changes.

When execution is triggered, missing folders are created automatically, and asset moves are performed in a batched operation wrapped by `AssetDatabase.StartAssetEditing()` and `StopAssetEditing()` to minimize refresh overhead. A structured summary log is generated upon completion.

The most recent operation is serialized to a file inside the Library folder to support a controlled undo process.
{% endtab %}

{% tab title="Technical Notes" %}
Project Organizer is an EditorWindow-based utility and does not execute in builds. It interacts exclusively with the Unity `AssetDatabase` and therefore preserves GUID-based references during file relocation.

All movement operations are performed using `AssetDatabase.MoveAsset`, not through direct file system manipulation. This guarantees reference safety and avoids meta file inconsistencies.

The tool batches asset operations to reduce reimport costs and includes a cancellable progress bar during scanning.

The undo system does not rely on Unity’s native Undo stack. Instead, it stores the last batch operation in a JSON file located in the project’s `Library` folder. As a result, undo functionality persists only as long as the Library directory remains intact.

Only one batch operation can be undone at a time.
{% endtab %}

{% tab title="Limitations" %}
Project Organizer organizes assets based on file extension rules. It does not analyze script dependencies, scene usage, or module boundaries. Projects that rely on feature-based directory structures may not benefit from extension-based grouping.

The tool does not rename files automatically in case of conflicts. If a destination already contains a file with the same name, the move is skipped and reported.

Only files inside the `Assets` directory are processed. The tool does not restructure folders themselves and does not operate outside Unity’s recognized asset space.

Undo support is limited to the most recent organization batch.
{% endtab %}

{% tab title="FAQ" %}

<details>

<summary>Does Project Organizer delete files ?</summary>

No. Project Organizer does not delete assets. It only moves them using Unity’s `AssetDatabase.MoveAsset` API. File contents remain unchanged, and meta files are handled internally by Unity.

</details>

<details>

<summary>Will asset references break after reorganization ?</summary>

No. Since all moves are performed through Unity’s `AssetDatabase`, GUID references are preserved automatically. Scenes, prefabs, materials, and scripts will continue to reference the same assets after relocation.

</details>

<details>

<summary>Can I undo an organization ?</summary>

Yes. The tool supports undoing the most recent organization batch. The last operation is serialized into a JSON file located inside the project’s `Library` folder. As long as the `Library` directory has not been cleared, the operation can be reverted.

Only the most recent batch can be undone.

</details>

<details>

<summary>What happens if a file already exists in the destination folder ?</summary>

If a file with the same name already exists at the target location, the move is skipped. The conflict is reported in the operation log. The tool does not overwrite or automatically rename files.

</details>

<details>

<summary>Does the tool reorganize folders ?</summary>

No. Project Organizer moves files into folders but does not restructure existing folder hierarchies. It creates missing target folders when required, but it does not reorganize folder trees beyond defined rules.

</details>

<details>

<summary>Can it move files outside of the Assets directory ?</summary>

No. The tool operates strictly within the `Assets` directory. It does not access or modify files outside Unity’s managed asset space.

</details>

<details>

<summary>Is it safe to use in production projects ?</summary>

Yes. The tool relies exclusively on Unity’s official APIs for asset movement. However, it is strongly recommended to use version control before performing large structural changes in any production project.

</details>

<details>

<summary>Why are some files not being moved ?</summary>

Common reasons include:

* The file extension is not included in the active profile.
* The file is located in an excluded directory.
* A conflict exists at the destination path.

Review the simulation log in Dry Run mode for detailed information.

</details>
{% endtab %}
{% endtabs %}

***

{% content-ref url="/spaces/u6FKPRtV6vGPNteP2vic/pages/rvtOHyaY5d5RymnCop7m" %}
[Project Organizer Changelog](/julestools-docs/changelog/readme-1.md)
{% endcontent-ref %}


---

# Agent Instructions: 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:

```
GET https://julestools.gitbook.io/julestools-docs/documentation/tools/project-organizer.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
