Yes there is, check the strings package.

package main

import (
    "fmt"
    "strings"
)

func main() {
    fmt.Println(strings.ToLower("Gopher"))
}
Answer from AurA on Stack Overflow
🌐
Go Packages
pkg.go.dev › strings
strings package - strings - Go Packages
ToLowerSpecial returns a copy of the string s with all Unicode letters mapped to their lower case using the case mapping specified by c.
🌐
Codecademy
codecademy.com › docs › go › strings › tolower()
Go | Strings | ToLower() | Codecademy
September 5, 2023 - The strings.ToLower() function is a built-in function in Golang that returns a new string with all the characters in the original string converted to lowercase.
Discussions

strings: optimize ToLower and ToUpper
According to a profiling data from a large number of servers at Google, strings.ToLower and strings.ToUpper is within the top 300 functions by CPU time. I believe there can be a significant speed-u... More on github.com
🌐 github.com
12
November 8, 2016
How to create lower-case unicode strings and also map similar looking strings to the same string in a security-sensitive setting?
It sounds like you want Unicode normalization . Functions for this are provided in the extended standard library at x/text/unicode/norm . I believe if you want to be really, really correct you want to normalize, then lowercase. Consider your needs carefully between NFKC and that Skeleton algorithm. That skeleton thing is pretty violent to the original text but it may be what you want, especially if you're retaining the original, but it will also mean that if you have people who are really using alternative language sets for things like their passwords you'd be contraining their password complexity. Just as an example that probably doesn't apply, because you mention retaining the original string, but that skeleton algorithm is violent. Be sure you want it. Which you may. More on reddit.com
🌐 r/golang
4
4
April 3, 2025
word count - How to convert strings to lower case in GO? - Stack Overflow
I am new to the language GO and working on an assignment where i should write a code that return the word frequencies of the text. However I know that the words 'Hello', 'HELLO' and 'hello' are all More on stackoverflow.com
🌐 stackoverflow.com
strings,bytes: ToLower(), ToUpper() by using bitwise operator
When the string consists of only ASCII characters, we can convert lower case to upper case using bitwise operators. Bitwise operators are more efficient than using addition or subtraction. go/src/s... More on github.com
🌐 github.com
15
November 23, 2023
🌐
Hugo
gohugo.io › functions › strings › tolower
strings.ToLower
December 19, 2025 - strings.ToLower STRING · Returns · string · Alias · lower · {{ lower "BatMan" }} → batman · Last updated: December 19, 2025 : Merge commit '08e1ea5c709d3d49bdc3ce3c21e8fa05a33150d0' (7e1a08e54)Improve this page · strings.Chomp · strings.Contains · strings.ContainsAny ·
🌐
GeeksforGeeks
geeksforgeeks.org › go language › how-to-convert-a-string-in-lower-case-in-golang
How to convert a string in lower case in Golang? - GeeksforGeeks
November 12, 2024 - Input: Hello, Geeks! Output: hello, geeks! Explanation: The ToLower function in Go converts all Unicode characters in a string to their lowercase equivalent, returning a new string.
🌐
Zig Quirks
openmymind.net › ASCII_String_To_Lowercase_in_Go
ASCII String to Lowercase in Go
January 19, 2023 - It turns out that strings.ToLower first scans the entire input to determine two things: 1) does the string contain only ASCII characters and 2) does it contain any uppercase characters. Understanding this detail explains all of the performance differences between the two versions.
🌐
Educative
educative.io › answers › how-to-convert-a-string-to-lowercase-in-go
How to convert a string to lowercase in Go
The strings package is a Go standard library package that contains functions to manipulate UTF-8 encoded strings. It provides the ToLower() method, which can convert a string to a lower case.
🌐
Codekru
codekru.com › home › strings.tolower() method in golang
strings.ToLower() method in Golang - Codekru
October 24, 2021 - An uninitialized string in Golang is an empty string. So, it will be like passing an empty string in the function and thus we will get the empty string back. package main import ( "fmt" "strings" ) func main() { var string1 string fmt.Println("lowercase string:", strings.ToLower(string1)) }
Find elsewhere
🌐
TutorialKart
tutorialkart.com › golang-tutorial › golang-convert-string-to-lowercase-tolower
How to convert String to Lowercase in Go?
May 26, 2021 - package main import ( "fmt" "strings" ) func main() { var str = "HelLo WoRld" var str_lower = strings.ToLower(str) fmt.Printf(str_lower) }
🌐
GitHub
github.com › golang › go › issues › 17859
strings: optimize ToLower and ToUpper · Issue #17859 · golang/go
November 8, 2016 - According to a profiling data from a large number of servers at Google, strings.ToLower and strings.ToUpper is within the top 300 functions by CPU time. I believe there can be a significant speed-up by specifically handling ASCII charact...
Author   dsnet
🌐
TutorialsPoint
tutorialspoint.com › how-to-convert-a-string-in-lower-case-in-golang
How to convert a string in lower case in Golang?
April 20, 2023 - The easiest and most common method to convert a string to lowercase in Golang is by using the strings.ToLower() function. This function converts all the ASCII letters in a string to their lowercase equivalents.
🌐
Reddit
reddit.com › r/golang › how to create lower-case unicode strings and also map similar looking strings to the same string in a security-sensitive setting?
r/golang on Reddit: How to create lower-case unicode strings and also map similar looking strings to the same string in a security-sensitive setting?
April 3, 2025 -

I have an Sqlite3 database and and need to enforce unique case-insensitive strings in an application, but at the same time maintain original case for user display purposes. Since Sqlite's collation extensions are generally too limited, I have decided to store an additional down-folded string or key in the database.

For case folding, I've found x/text/collate and strings.ToLower. There is alsostrings.ToLowerSpecial but I don't understand what it's doing. Moreover, I'd like to have strings in some canonical lower case but also equally looking strings mapped to the same lower case string. Similar to preventing URL unicode spoofing, I'd like to prevent end-users from spoofing these identifiers by using similar looking glyphs.

Could someone point me in the right direction, give some advice for a Go standard library or for a 3rd party package? Perhaps I misremember but I could swear I've seen a library for this and can't find it any longer.

Edit: I've found this interesting blog post. I guess I'm looking for a library that converts Unicode confusables to their ASCII equivalents.

Edit 2: Found one: https://github.com/mtibben/confusables I'm still looking for opinions and experiences from people about this topic and implementations.

🌐
Dot Net Perls
dotnetperls.com › tolower-go
Go - strings.ToLower, ToUpper Examples - Dot Net Perls
The ToUpper func works in the same way as ToLower. It returns a new, copied version of the string argument that has lowercase chars changed to uppercase ones.
🌐
TutorialsPoint
tutorialspoint.com › golang-program-to-convert-a-string-into-lowercase
Golang Program to convert a string into lowercase
February 17, 2023 - The function accepts the given string as argument and returns the final string after converting it to lowercase. Step 1 ? First, we need to import the fmt and Unicode package. Step 2 ? Now, create the ToLower() function that accepts the string whose case is to be changed and returns the string.
🌐
Go Packages
pkg.go.dev › github.com › searKing › golang › go › strings
strings package - github.com/searKing/golang/go/strings - Go Packages
December 30, 2025 - func StudlyCapsConsonantUpperCase(s string) string ... ToLowerLeading returns s with it's first Unicode letter mapped to their lower case.
🌐
Google Groups
groups.google.com › g › golang-nuts › c › WfpmVDQFecU
How to make the first character in a string lowercase?
To unsubscribe from this group and all its topics, send an email to golang-nuts...@googlegroups.com. ... Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message ... Te easiest is not always the best. The code should be correct and reasonably efficient. For example, func firstToLower(s string) string { if len(s) > 0 { r, size := utf8.DecodeRuneInString(s) if r != utf8.RuneError || size > 1 { lo := unicode.ToLower(r) if lo != r { s = string(lo) + s[size:] } } } return s }
🌐
GitHub
gist.github.com › 5970ef8918e5074ce6d1
Golang: somewhat faster string uppercase / lowercase (for certain strings) · GitHub
Golang: somewhat faster string uppercase / lowercase (for certain strings) - upperlower.go
🌐
IncludeHelp
includehelp.com › golang › convert-specified-string-in-lowercase.aspx
Golang program to convert specified string in lowercase
Here, we are going to learn how to convert specified string in lowercase in Golang (Go Language)? Submitted by Nidhi, on March 09, 2021 [Last updated : March 03, 2023] ... In this program, we will convert the specified string into lowercase using strings.ToLower() function and print result ...
🌐
GitHub
github.com › golang › go › issues › 64361
strings,bytes: ToLower(), ToUpper() by using bitwise operator · Issue #64361 · golang/go
November 23, 2023 - When the string consists of only ASCII characters, we can convert lower case to upper case using bitwise operators. Bitwise operators are more efficient than using addition or subtraction. go/src/strings/strings.go Lines 616 to 625 in 3e...
Author   ksw2000