Try the String Repeater

String Padding and Repetition Across Languages: Python, JavaScript, SQL, and Bash

Python's str * n, JavaScript's repeat() and padStart(), SQL's RPAD() and LPAD(), and bash printf are all solving the same problem: building strings of specific lengths and patterns. Here's the complete cross-language reference for string repetition and padding with practical formatting examples.

June 10, 2026 5 min read
Share: Facebook WhatsApp LinkedIn Email
String Padding and Repetition Across Languages: Python, JavaScript, SQL, and Bash

String padding and repetition are in every programming language — and they solve formatting problems that appear constantly in real code

Generating a line of dashes as a visual separator. Padding a number to a fixed width for a table. Creating a string of dots as a leader in a table of contents. Right-aligning output in a terminal. These are common tasks in console applications, log formatting, code generation, and report generation — and every major language provides built-in functions for them.

Understanding the string repetition and padding functions in your language saves the time of implementing them manually, and using the right function (rather than a loop) produces cleaner, more readable code.


Python: str * n, str.center, str.ljust, str.rjust

String repetition:

"=" * 40
# → "========================================"

"-" * 20
# → "--------------------"

"ab" * 5
# → "ababababab"

Padding:

# Left-justify in a field of width 20, padded with spaces
"Hello".ljust(20)
# → "Hello               "

# Right-justify
"42".rjust(8)
# → "      42"

# Zero-pad a number
"42".zfill(8)
# → "00000042"

# Centre with fill character
"Title".center(40, "=")
# → "=================Title=================="

F-string formatting (Python 3.6+):

# Equivalent with f-strings
f"{'Hello':<20}"          # left-align in 20-char field
f"{'42':>8}"              # right-align in 8-char field
f"{'42':0>8}"             # zero-pad to 8 chars
f"{'Title':=^40}"         # centre with = fill in 40-char field
f"{3.14159:.2f}"          # 2 decimal places: 3.14
f"{1234567:,}"            # thousands separator: 1,234,567

JavaScript: String.repeat(), padStart(), padEnd()

Repetition:

"=".repeat(40)
// → "========================================"

"ha".repeat(3)
// → "hahaha"

"-".repeat(0)
// → ""

Padding (ES2017+):

// padStart: pad at the beginning
"42".padStart(8)        // "      42"
"42".padStart(8, "0")   // "00000042"
"hello".padStart(8, "*") // "***hello"

// padEnd: pad at the end
"hello".padEnd(20)       // "hello               "
"hello".padEnd(10, ".")  // "hello....."

Building a progress bar:

function progressBar(percent, width = 30) {
  const filled = Math.round(width * percent / 100);
  const empty = width - filled;
  return `[${"█".repeat(filled)}${"░".repeat(empty)}] ${percent}%`;
}

progressBar(65);
// → "[████████████████████░░░░░░░░░░] 65%"

SQL: REPEAT(), RPAD(), LPAD()

SQL has string repetition and padding built into most databases:

-- REPEAT(string, count)
SELECT REPEAT('=', 40);
-- → '========================================'

-- LPAD(string, length, pad_string)
SELECT LPAD('42', 8, '0');
-- → '00000042'

SELECT LPAD(invoice_number::text, 8, '0') AS formatted_invoice
FROM invoices;
-- Formats all invoice numbers with leading zeros to 8 digits

-- RPAD(string, length, pad_string)
SELECT RPAD(product_name, 30, '.') || ' £' || price
FROM products;
-- → "Wireless Headphones........... £89.99"
-- → "USB-C Cable.................... £12.99"

bash: printf, yes, and brace expansion

printf for formatted output:

# Right-align numbers in columns
printf "%8d\n" 1 10 100 1000
#        1
#       10
#      100
#     1000

# Zero-pad
printf "%08d\n" 42
# → 00000042

# Create separator line
printf '%0.s=' {1..40}
# → ========================================

Creating repeated strings:

# Using printf
printf '%.s-' {1..20}
# → --------------------

# Using yes command (pipe to head for count)
yes "=" | head -c 40
# → ========================================

# Building a box border
border=$(printf '+%s+' "$(printf '%.s-' {1..38})")
echo "$border"
# → +--------------------------------------+

Go: strings.Repeat(), fmt.Sprintf()

import "strings"
import "fmt"

// Repetition
strings.Repeat("=", 40)
// → "========================================"

strings.Repeat("ab", 5)
// → "ababababab"

// Padding with fmt.Sprintf
fmt.Sprintf("%8d", 42)     // "      42" (right-aligned)
fmt.Sprintf("%-8d", 42)    // "42      " (left-aligned)
fmt.Sprintf("%08d", 42)    // "00000042" (zero-padded)
fmt.Sprintf("%8.2f", 3.14) // "    3.14"

Practical use cases for string repetition and padding

Console table formatting:

print(f"{'Product':<30} {'Price':>10} {'Qty':>6}")
print("-" * 48)
for item in inventory:
    print(f"{item.name:<30} {item.price:>10.2f} {item.qty:>6}")

Log line separators:

def log_section(title):
    width = 60
    separator = "=" * width
    print(separator)
    print(title.center(width))
    print(separator)

Fixed-width file generation: Many legacy systems (COBOL-era bank data, government file formats) require fixed-width fields. A customer record might specify "last name: 25 characters, right-padded with spaces." Python's ljust() and rjust() make this straightforward.

Generating test data:

# Create a string that hits exactly the maximum field length
max_varchar = "A" * 255  # Test a VARCHAR(255) column
overflow_test = "A" * 256  # Test what happens one character over

How to use the String Repeater on sadiqbd.com

  1. Enter the string to repeat
  2. Set the repetition count
  3. Set separator (optional — string between each repetition)
  4. Generate — copy the output
  5. Use for: creating dividers, generating test data, building fill characters for formatted output

Frequently Asked Questions

Is there a maximum string length in different languages? Python strings have no hard length limit (limited only by available memory). JavaScript strings have a maximum length of 2³⁰ − 2 characters (approximately 1 billion). Java's String maximum is Integer.MAX_VALUE (2³¹ − 1, approximately 2 billion characters). SQL VARCHAR limits are set per column (typically 255 or 65,535 bytes depending on the type). These limits are rarely relevant in practice but matter for stress testing.

Why does "0" * 5 give "00000" in Python but 0 * 5 gives 0? Python's * operator is overloaded — for strings, it performs repetition; for integers, it performs multiplication. The same symbol, entirely different operations. This is consistent with Python's general approach of making common operations on different types feel natural.

Is the String Repeater free? Yes — completely free, no sign-up required.


String repetition and padding are small tools that appear constantly in formatting-heavy code. Every language provides them as built-in operations precisely because the alternative — writing a loop — is verbose and less readable.

Try the String Repeater free at sadiqbd.com — repeat any string any number of times with optional separator, instantly.

Share: Facebook WhatsApp LinkedIn Email

String Repeater

Free, instant results — no sign-up required.

Open String Repeater →
Similar Tools
Morse Code Translator Lorem Ipsum Generator Text to Slug Word & Character Counter Character Frequency Find & Replace Text Diff Text Reverser
String Repeater — Repeat Any Text Any Number of Times Instantly
Text Tools
String Repeater — Repeat Any Text Any Number of Times Instantly
Stress Testing with Repetitive Data: The Edge Cases That Break Real Systems
Text Tools
Stress Testing with Repetitive Data: The Edge Cases That Break Real Systems
String Repetition and ANSI Escape Codes: How Progress Bars, Borders, and Terminal UIs Are Built
Text Tools
String Repetition and ANSI Escape Codes: How Progress Bars, Borders, and Terminal UIs Are Built
What Actually Happens When You Repeat a String 1,000,000 Times — and Which Operations Become Catastrophically Slow
Text Tools
What Actually Happens When You Repeat a String 1,000,000 Times — and Which Operations Become Catastrophically Slow
Why Testing With Repeated Strings Reveals the Limits Your Code Doesn't Know It Has
Text Tools
Why Testing With Repeated Strings Reveals the Limits Your Code Doesn't Know It Has