Skip to main content
Ora Browser supports multiple search engines with quick-switch capabilities using aliases. You can instantly search using different engines by typing an alias followed by your query.

Built-in Search Engines

Ora Browser comes with pre-configured search engines, each with multiple aliases for quick access.

General Search Engines

Google

Aliases: google, goo, g, searchDefault search engine with auto-suggestions

DuckDuckGo

Aliases: duckduckgo, ddg, duckPrivacy-focused search

Bing

Aliases: bing, b, microsoftMicrosoft’s search engine

Kagi

Aliases: kagi, kgPremium ad-free search

AI Chat Engines

// From SearchEngineService.swift:72-88
SearchEngine(
    name: "ChatGPT",
    color: theme?.foreground ?? .white,
    icon: "openai-capsule-logo",
    aliases: ["chat", "chatgpt", "gpt", "cgpt", "openai", "cha"],
    searchURL: "https://chatgpt.com?q={query}",
    isAIChat: true,
    foregroundColor: theme?.background ?? .black
),
SearchEngine(
    name: "Claude",
    color: Color(hex: "#DE7C4C"),
    icon: "",
    aliases: ["claude", "cl", "cla", "anthropic"],
    searchURL: "https://claude.ai?q={query}",
    isAIChat: true
)

ChatGPT

Aliases: chat, chatgpt, gpt, cgpt, openai, chaOpenAI’s ChatGPT

Claude

Aliases: claude, cl, cla, anthropicAnthropic’s Claude AI

Gemini

Aliases: gemini, gem, bard, google ai, gaiGoogle’s Gemini AI

Perplexity

Aliases: perplexity, perplex, pplx, ppl, perAI-powered answer engine

Grok

Aliases: grok, gr, groX’s AI assistant

Meta AI

Aliases: meta ai, meta, llama, facebook ai, maiMeta’s AI assistant

Copilot

Aliases: copilot, microsoft copilot, bing chat, ms copilotMicrosoft Copilot

GitHub Copilot

Aliases: github copilot, gh copilot, github ai, ghcGitHub’s AI assistant

YouTube

Aliases: youtube, you, youtu, yo, ytSearch YouTube videos

Reddit

Aliases: reddit, r, rd, rdit, redSearch Reddit discussions

X (Twitter)

Aliases: x, x.com, twitter, tw, twtr, twit, twitt, twitteSearch posts on X

T3Chat

Aliases: t3chat, t3, t3c, tchatT3 AI Chat platform

Using Search Aliases

Search aliases allow you to quickly switch between search engines without changing your default.
1

Type an Alias

In the address bar, type an alias followed by a space:
gpt
2

Enter Your Query

After the space, type your search query:
gpt how to learn swift programming
3

Press Enter

Press Enter to search using ChatGPT instead of your default search engine

Examples

Search Engine Configuration

The search engine system is built with flexibility in mind:
// From SearchEngineService.swift:3-21
struct SearchEngine {
    let name: String
    let color: Color
    let icon: String
    let aliases: [String]
    let searchURL: String
    let isAIChat: Bool
    let foregroundColor: Color?
    let autoSuggestions: ((String) async -> [String])?
}

enum SearchEngineID: String, CaseIterable {
    case youtube = "YouTube"
    case chatgpt = "ChatGPT"
    case claude = "Claude"
    case google = "Google"
    case grok = "Grok"
    case perplexity = "Perplexity"
    case reddit = "Reddit"
    // ... more engines
}

Setting Default Search Engine

1

Open Settings

Press ⌘, or navigate to Ora Browser → Settings
2

Go to Search

Select the Search section
3

Choose Default Engine

Select your preferred search engine from the dropdown
4

Save

Your selection is automatically saved
You can set different default search engines for different containers (like Personal, Work, etc.)

Custom Search Engines

Add your own custom search engines with personalized aliases.

Adding a Custom Engine

1

Open Settings

Navigate to Settings → Search → Custom Engines
2

Click Add Engine

Click the Add Custom Engine button
3

Configure Engine

Fill in the required fields:
  • Name: Display name for the engine
  • Search URL: URL with {query} placeholder
  • Aliases: Space-separated list of shortcuts
  • Is AI Chat: Mark if it’s an AI chat service
4

Save Engine

Click Save to add your custom engine

Custom Engine Example

// Custom search engine structure
SearchEngine(
    name: "MDN",
    color: .blue,
    icon: "",
    aliases: ["mdn", "mozilla", "webdocs"],
    searchURL: "https://developer.mozilla.org/en-US/search?q={query}",
    isAIChat: false
)
Usage:
mdn javascript array methods
This searches MDN Web Docs directly from the address bar.

URL Template Format

When creating custom search engines, use {query} as the placeholder:
https://www.example.com/search?q={query}
https://docs.example.com/?search={query}
https://example.com/find/{query}
The {query} placeholder is automatically replaced with URL-encoded search terms:
// From SearchEngineService.swift:276-281
func createSearchURL(for engine: SearchEngine, query: String) -> URL? {
    let encodedQuery =
        query.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) ?? ""
    let urlString = engine.searchURL.replacingOccurrences(of: "{query}", with: encodedQuery)
    return URL(string: urlString)
}

Auto-Suggestions

Some search engines support auto-suggestions as you type.

Enabled Engines

Currently, Google provides auto-suggestions:
// From SearchEngineService.swift:89-98
SearchEngine(
    name: "Google",
    color: .blue,
    icon: "",
    aliases: ["google", "goo", "g", "search"],
    searchURL:
    "https://www.google.com/search?client=safari&rls=en&ie=UTF-8&oe=UTF-8&q={query}",
    isAIChat: false,
    autoSuggestions: self.googleSuggestions
)

How Suggestions Work

// From SearchEngineService.swift:297-316
func googleSuggestions(_ query: String) async -> [String] {
    guard
        let url = createSuggestionsURL(
            urlString:
            "https://suggestqueries.google.com/complete/search?client=firefox&q={query}",
            query: query
        )
    else {
        return []
    }

    do {
        let (data, _) = try await URLSession.shared.data(from: url)
        let decoded = try JSONDecoder().decode(SuggestResponse.self, from: data)
        return decoded.suggestions
    } catch {
        logger.error("Error fetching Google suggestions: \(error.localizedDescription)")
        return []
    }
}
Suggestions appear in real-time as you type in the address bar.

Container-Specific Search Engines

Ora Browser supports different default search engines per container.

Use Cases

Personal Container

Use Google or DuckDuckGo for general web searches

Work Container

Use Perplexity for research-oriented queries

Development Container

Set Google as default with quick access to docs

Creative Container

Use AI chats like Claude or ChatGPT for creative work

Configuration

// From SearchEngineService.swift:224-242
func getDefaultSearchEngine(for containerId: UUID? = nil) -> SearchEngine? {
    // First check per-container setting
    if let containerId,
       let defaultId = settingsStore.defaultSearchEngineId(for: containerId),
       let engine = searchEngines.first(where: { $0.name == defaultId })
    {
        return engine
    }

    // Then check global default setting
    if let globalDefaultId = settingsStore.globalDefaultSearchEngine,
       let engine = searchEngines.first(where: { $0.name == globalDefaultId })
    {
        return engine
    }

    // Fallback to Google if no custom default is set
    return searchEngines.first(where: { $0.name == "Google" })
}
Container-specific settings override the global default. This allows you to have different search behaviors in different browsing contexts.

AI Chat Engines

AI chat engines are specially marked and can have separate defaults:
// From SearchEngineService.swift:244-254
func getDefaultAIChat(for containerId: UUID? = nil) -> SearchEngine? {
    if let containerId,
       let defaultId = settingsStore.defaultAIEngineId(for: containerId),
       let engine = searchEngines.first(where: { $0.name == defaultId && $0.isAIChat })
    {
        return engine
    }

    // Fallback to ChatGPT if no custom default is set
    return searchEngines.first(where: { $0.isAIChat && $0.name == "ChatGPT" })
}
FeatureTraditional SearchAI Chat
PurposeFind existing web pagesGenerate responses
ResultsLinks to websitesConversational answers
Use CaseResearch, navigationQuestions, creative tasks
ExamplesGoogle, DuckDuckGoChatGPT, Claude

Search Engine Management

Editing Custom Engines

  1. Navigate to Settings → Search → Custom Engines
  2. Click on the engine you want to edit
  3. Modify the fields
  4. Click Save Changes

Deleting Custom Engines

  1. Open Settings → Search → Custom Engines
  2. Find the engine you want to remove
  3. Click the Delete button
  4. Confirm the deletion
Deleting a custom search engine is permanent and cannot be undone. You’ll need to re-add it with all its settings if you delete it accidentally.

Tips & Best Practices

Create memorable 2-3 character aliases for frequently used engines:
  • g for Google
  • gpt for ChatGPT
  • yt for YouTube
  • gh for GitHub search
Set different default engines per container:
  • Work: Perplexity for research
  • Personal: Google for general use
  • Development: GitHub Copilot for coding questions
Use AI chat engines for:
  • Explaining complex topics
  • Generating content
  • Coding assistance
  • Creative brainstorming
After adding a custom engine:
  1. Test it with a simple query
  2. Verify the URL format is correct
  3. Check that aliases work as expected

Troubleshooting

Alias Not Working

  • Ensure the alias doesn’t conflict with existing ones
  • Check for typos in the alias spelling
  • Restart Ora Browser if needed

Custom Engine Not Appearing

  • Verify the search URL includes {query} placeholder
  • Check that the engine was saved successfully
  • Look for error messages in Settings

Wrong Search Results

  • Confirm the correct engine is being used
  • Check container-specific settings
  • Verify the search URL is properly formatted

Build docs developers (and LLMs) love