---
title: "getscriptclosure"
description: "Loads available script bytecode into a new closure without executing it."
---

```lua
getscriptclosure(script: Instance): function?
```

---

## Aliases

- `getscriptfunction`

---

## Arguments

<ParamField body="script" type="Instance" required>
  The script Instance to inspect.
</ParamField>

---

## Returns

<ResponseField name="closure" type="function?">
  The loaded script closure, or nil on a read/load failure.
</ResponseField>

Accepts LocalScript, ModuleScript, CoreScript, Script; server-context LocalScript raises. Returns nil on many read/load failures. The final closure uses the main-thread environment, so do not assume it keeps the original script's locals.

**Related types:** [Scripts types & behavior](/reference/scripts/types).

---

## Example

```lua
for _, script in ipairs(getscripts()) do
    local ok, fn = pcall(getscriptclosure, script)
    if ok and fn then print(script.Name, type(fn)) break end
end
```
