Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

Use text[::-1] to create a reversed Python string:

text = "Python"
reversed_text = text[::-1]
print(reversed_text)  # nohtyP

The slice walks through the string from end to beginning and returns a new string; it does not change the original. The examples below use Python 3.14 documentation for the language’s sequence and string behavior.

Reverse a string with slicing

For ordinary Python str values, a negative-step slice is the concise default:

def reverse_string(text: str) -> str:
    return text[::-1]

A slice has the form [start:stop:step]. The start position is included and the stop position is excluded. With both bounds omitted and a step of -1, Python traverses the sequence backward from its end. See the Python 3.14 common sequence operations and string tutorial.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Strings are immutable, so slicing produces a new string rather than modifying the value passed in. An empty string works without a special case: reversing "" returns "".

Reverse iteration with reversed()

If you need a string result, join the reverse iterator:

reversed_text = "".join(reversed(text))

reversed(text) supplies characters in reverse order; "".join(...) assembles them into a string. If you only need to process characters backward, iterate over reversed(text) directly instead of building another string. The Python FAQ recommends reversed() for reverse iteration, and the looping-techniques tutorial covers its use.

Reverse a string with a loop

A loop makes the index movement explicit and gives you a place to add per-character logic:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
def reverse_with_loop(text: str) -> str:
    chars = []
    for index in range(len(text) - 1, -1, -1):
        chars.append(text[index])
    return "".join(chars)

range(len(text) - 1, -1, -1) starts at the final valid index, moves backward by one, and stops before -1. Characters are collected in a list and joined once at the end, rather than repeatedly building a longer string inside the loop.

Use recursion as a teaching example

This recursive function reverses the tail of the string, then places the first character after it:

def reverse_recursive(text: str) -> str:
    if text == "":
        return ""
    return reverse_recursive(text[1:]) + text[0]

The empty string is the base case. Each recursive call receives a shorter tail, and the original first character is added after that tail has been reversed. Recursion illustrates a base case and a recursive step, but this version is not a practical choice for arbitrarily long strings: it makes calls proportional to input length and creates slices and concatenated strings along the way.

Python limits interpreter recursion depth to help prevent the C stack from overflowing. The safe maximum depends on the platform, so do not raise the limit casually; see the Python 3.14 recursion-limit documentation.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Which method should you choose?

Method Best fit Result
text[::-1] Creating a reversed string with concise, idiomatic code A new string
reversed(text) Processing characters backward without needing a string result A reverse iterator
Loop and join() Learning traversal or applying logic as each character is visited A new string
Recursion Demonstrating recursive structure on short inputs A new string, with recursion-depth constraints

These approaches express different needs; no performance ranking is established here.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

What “reverse” means for Unicode text

These examples reverse the order of elements in a Python str. They do not necessarily preserve what a person sees as a single visual character: emoji sequences and letters combined with accents can consist of multiple Unicode code points. If your application must reverse user-perceived text units while keeping such sequences together, you need text-segmentation handling rather than assuming a basic string slice does that.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.