# Obfuscated Builds

Wails includes support for obfuscating your application using [garble](https://github.com/burrowers/garble). 

To produce an obfuscated build, you can use the `-obfuscate` flag with the `wails build` command:

```bash
wails build -obfuscated
```
To customise the obfuscation settings, you can use the `-garbleargs` flag:

```bash
wails build -obfuscated -garbleargs "-literals -tiny -seed=myrandomseed"
```

These settings may be persisted in your [project config](/guides/reference/project-config).

## How it works

In a standard build, all bound methods are available in the frontend under the `window.go`
variable. When these methods are called, the corresponding backend method is called using
the fully qualified function name. When using an obfuscated build, methods are bound using 
an ID instead of a name. The bindings generated in the `wailsjs` directory use these IDs to 
call the backend functions.

:::note
To ensure that your application will work in obfuscated mode, you must use the generated 
bindings under the `wailsjs` directory in your application.  
:::

## Example

Importing the "Greet" method from the bindings like this:

```js
import { Greet } from '../../wailsjs/go/main/App';

// snip
Greet('World');
```

will ensure that the method will work correctly in obfuscated mode, as the bindings will 
be regenerated with IDs and the call mechanism updated.