# Troubleshooting

### macOS

When installing the app on macOS, if you see this kind of message:

<figure><img src="/files/6nqH8C4VXvLpLdz23QNy" alt="" width="375"><figcaption><p>“SEO Utils” can’t be opened because Apple cannot check it for malicious software.</p></figcaption></figure>

1. Please open the **System Settings**
2. Go to the **Privacy & Security** menu
3. Hit the **Open Anyway** button

<figure><img src="/files/DEc42w6JyzCFtArsnFhj" alt="" width="563"><figcaption></figcaption></figure>

If you cannot upgrade the app, please move the SEO Utils app to the **Applications** folder

<figure><img src="/files/dQmcg9a2NUec0V8U9o1N" alt="" width="563"><figcaption><p>Move the SEO Utils app to the Applications to folder</p></figcaption></figure>

And please make sure you allow SEO Utils to access your Downloads folder.

<figure><img src="/files/9XTNPMGNnrpmlxjhucrC" alt="" width="375"><figcaption><p>Allows SEO Utils to access the Downloads folder in macOS</p></figcaption></figure>

### Windows

If you encounter a permission error or the program exits when clustering keywords on Windows, please ensure that you run SEO Utils as an administrator. This will allow the app to write the cluster data into a CSV file on your machine.

<figure><img src="/files/6zJm5qepsJIeKvvyvdYm" alt=""><figcaption><p>Permission denied</p></figcaption></figure>

You can do that by right-clicking on the SEO Utils shortcode, going to the **Compatibility** tab, and selecting "**Run this program as an administrator**." So, each time you run it, it will always run as an administrator.

<figure><img src="/files/R7mckfoxChAm2X3UGckj" alt=""><figcaption><p>Run "SEO Utils" as an administrator</p></figcaption></figure>

### Linux

If you can't open the app and see an alert like this.

<figure><img src="/files/erhe1dMop6ocKgM0M3bx" alt="" width="563"><figcaption><p>Cannot open the app in Linux</p></figcaption></figure>

Right-click on the app > **Properties** > **Permissions** > Check "**Allow executing file as program"**.

<figure><img src="/files/4Lbsn8rLbOk7Zl6jUWo4" alt="" width="563"><figcaption></figcaption></figure>

***

If you're running Ubuntu 24.04 (or similar distro) and the app doesn't launch, try running it from the terminal. If you see this error:

```
./SEO Utils: error while loading shared libraries: libwebkit2gtk-4.0.so.37: cannot open shared object file: No such file or directory
```

This happens because Ubuntu 24.04 ships with WebKitGTK 4.1 instead of 4.0. The `libwebkit2gtk-4.0-dev` package is not available in the default repositories for this distro version.

**Solution:** Create symbolic links to alias version 4.1 to version 4.0:

```bash
sudo ln -sf /usr/lib/x86_64-linux-gnu/libwebkit2gtk-4.1.so.0 /usr/lib/x86_64-linux-gnu/libwebkit2gtk-4.0.so.37
sudo ln -sf /usr/lib/x86_64-linux-gnu/libjavascriptcoregtk-4.1.so.0 /usr/lib/x86_64-linux-gnu/libjavascriptcoregtk-4.0.so.18
```

Credit: [BambuStudio GitHub Issue #3973](https://github.com/bambulab/BambuStudio/issues/3973#issuecomment-2097651206)

***

If the app crashes on launch with an error like:

```
Overriding existing handler for signal 10. Set JSC_SIGNAL_FOR_GC if you want WebKit to use a different signal
...
fatal error: non-Go code set up signal handler without SA_ONSTACK flag
```

This is a signal-handling conflict between WebKit and the Go runtime, most commonly seen on Ubuntu 26.04 and other distros shipping a newer WebKitGTK.

{% hint style="success" %}
**Fixed in SEO Utils 1.48.0 and later.** The app now reconfigures these signal handlers automatically at startup. If you see this crash, update to the latest version and relaunch — no environment variables required.
{% endhint %}

<details>

<summary>Workaround for older versions (pre-1.48.0)</summary>

If you can't update right now, set an environment variable before launching the app to tell WebKit to use a non-conflicting signal:

```bash
JSC_SIGNAL_FOR_GC=SIGUSR2 ./SEO\ Utils
```

Or export it for the session:

```bash
export JSC_SIGNAL_FOR_GC=SIGUSR2
./SEO\ Utils
```

</details>


---

# 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://help.seoutils.app/troubleshooting.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.
