# How To Keep Unfiltered Code with Admins With BetterShield?

Non-admins can no longer add scripts to posts or upload any file type. No role is changed.

With **[BetterShield](/)**, non-admins can no longer add scripts to posts or upload any file type. No role is changed.

## What it does

**Admin-only script and file uploads** is under **BetterShield › Protection › Hardening**. Non-admins can no longer add scripts to posts or upload any file type. No role is changed. It is off by default.

<span id="set-it-up" aria-hidden="true"></span>

## Step 1: Open Protection › Hardening

Open **Protection › Hardening** and find **Admin-only script and file uploads**.

<figure class="doc-shot">
  <img src="/docs/screenshots/restrict-unfiltered-code.png" alt="Keep unfiltered code with admins: saved state and available controls in BetterShield." width="980" height="115" loading="lazy" decoding="async">
  <figcaption>Review the state and choices shown on your own site before applying a change.</figcaption>
</figure>

## Step 2: Keep unfiltered code with admins

- Open its preview and read what will change. The preview changes nothing.
- There are no extra fields. Lower roles cannot use unfiltered HTML or unrestricted file uploads. Roles themselves are not rewritten.
- Turn on the fix. If the screen asks you to confirm recovery or your password, complete that before continuing.

## Recommended settings

Our advice is to test this on staging, then apply it when the behavior fits the site. Keep a working recovery method before changes affecting sign-in or the site address.

## What it can break and how to undo

Editors who deliberately publish scripts or unrestricted HTML may lose that ability. Test the publishing workflow first. Turn the fix off to use its undo, then check the original workflow. A change is recorded in the activity log; an undo does not erase that record.

<span id="check-it-is-working" aria-hidden="true"></span>

## Final Outcome

The row should show the fix is on. Test the affected operation with an appropriate account, then check the finding. The score and Findings update on their own after the change. If the finding stays open, press **Check Again** to see what the check still sees. A server or another plugin can enforce a setting independently, so switching BetterShield off does not necessarily remove that other protection.

<figure class="doc-shot">
  <img src="/docs/screenshots/restrict-unfiltered-code.png" alt="Keep unfiltered code with admins: saved state and available controls in BetterShield." width="980" height="115" loading="lazy" decoding="async">
  <figcaption>Example Unfiltered code view. Check the saved values and status on your own site.</figcaption>
</figure>

## Related

- [Hardening overview](/docs/hardening/)
- [Set up recovery](/docs/set-up-recovery/)
- [Activity log](/docs/activity-log/)

This is how you can keep unfiltered code with admins with BetterShield.

Getting Stuck? Feel free to contact our [Dedicated Support Team](/support/).
