Using ANSI escape sequences in PowerShell (2023)

There are two main parts to using ANSI in PowerShell; Theexhausting characterit's atescape sequence🇧🇷 The escape character is used to indicate the beginning of a sequence and changes the meaning of the characters that follow the escape character. Most escape characters are used to specify a virtual terminal sequence (ANSI escape sequence) that modifies the terminal. Escape characters are an in-band signaling pattern that controls cursor position, color, font, and other options in terminals and terminal emulators. ANSI escape sequences are commonly used to change command-line displays. Windows PowerShell does not have a built-in special escape character. That's why you should use"$([characters]27)"to generate an ASCII character representing an escape character. However, PowerShell now includes ato escape special characters `e🇧🇷 To use the escape character, start a string with the escape character`efollowed by an opening bracket`e[🇧🇷 Insert the escape sequence inside the square brackets. This escape sequence determines how the terminal interprets the characters and acts accordingly.

The best way to understand ANSI escape sequences is to break them down into their different parts. Using some ASCII graphics as an example, you can break the sequence`"`e[5;36m$asciiArt`e[0m"in its different parts. The sequence starts with the control sequence introducer.`e[. Los`eis the escape character and[is the introducer. What follows is the order. Each of the numbers within this sequence represents an argument. The number5represents an argument that causes the text within the string to blink. Each argument must be separated by a semicolon, so you'll see a semicolon between 5 and 36. Values ​​30-37 represent different foreground colors. In this example36represents a foreground color of cyan.

Next in line is the letterSubwaywhich represents a function. The function is called SGR ("Select Graphics Playback") and takes several previously defined arguments in sequence. What follows after the function is the text that will be displayed. In this example it is a string that is stored here in the variable$acsiiArtcontains ASCII art for #PS7Now. at the end of the sequence`e[0mcalls the SGR function again, but this time it takes the argument0to reset and disable all attributes defined in the first sequence. If you recreate the script and run it in a terminal, the ASCII graphic #PSNow will appear in a cyan font and blinking text. Now that you have a good understanding of ANSI escape sequences, let's see what else you can do with them and have some fun!

$asciiArt =@"__ __ ____ ___________ ____/ // /_/ __ \ ___/__ / | / /___ _ __/_ _ __/ /_/ \__ \ / / |/ / __ \ | /| / //_ _ __/ ____/__/ / / / /| / /_/ / |/ |/ //_//_/ /_/ /____/ /_/_/ |_/\____/|__/|__/ "@recording output"`e[5;36m$asciiArt`e[0m";

Using ANSI escape sequences in PowerShell (1)

Flashing is determined by your terminal, yours may not support it.

text style

ANSI escape sequences support a few different text style options; bold, underlined and inverted. ANSI-escaped text styling is one of the most basic changes you can make to terminal text. Each of the styles has a reset argument that disables the enabled attribute. This is important to know because if you don't reset the attribute, this style will apply to all future entries.

StyleSeriesreboot sequence
bold1 metro`e[22m
restart all`e[0m


$text ='#PS7Ahora';write output"`e[1m$text";

Using ANSI escape sequences in PowerShell (2)


$text ='#PS7Ahora';write output"`e[4m$text";

Using ANSI escape sequences in PowerShell (3)


$text ='#PS7Ahora';write output"`e[7m$texto";

Using ANSI escape sequences in PowerShell (4)


All of the above examples do not include a reboot sequence. If you don't include a restart string, the applied ANSI attributes will still apply to all future text your code displays to the screen. In PowerShell, command or script scope limits its impact, but affects the output of your code. If you run the snippet below, you'll notice that the text after #PS7Now is still bold and inverted. It also changes how the first newline of the terminal prompt returns.

(Video) Customize Your PowerShell Prompt with Nerd Fonts & ANSI Escape Sequences

$text ='#PS7Ahora'recording output"`e[1;7m$text, ANSI not reset, text remains bold and inverted"

Using ANSI escape sequences in PowerShell (5)

When using ANSI reset sequences, you have two options. You can reset the attribute individually or all. From the table above, you know that the argument in bold is1and the inverse argument is7🇧🇷 If you combine them you can create the escape sequence`e[1;7m🇧🇷 This sequence bolds the text and reverses the foreground and background colors. To just redefine the inverse, you would use the sequence`e[27m🇧🇷 Text after this string would remain bold but not inverted. To just reset the bolded attribute you would use a different string`e[22m🇧🇷 This would remove all attributes applied by the first string and the text would no longer be inverted or bolded. Another option available if you don't need to keep any of the attributes enabled is to reset them all at once. The order to reset all attributes is`e[0m.

$text ='#PS7Ahora'#Redefine styles individuallyrecording output"`e[1;7m$text `e[27m Not inverted `e[22mNo in bold ni inverted";

Using ANSI escape sequences in PowerShell (6)

# Restart allrecording output"`e[1;7m$text`e[0m not bolded or inverted";

Using ANSI escape sequences in PowerShell (7)

mover cursor

ANSI strings can do more than just format text. ANSI also supports cursor movement. While I'm not sure how practical this is in a PowerShell script, it's fun to play around with. wear`e[1m$pwd`e[2A;dormir 5As an example sequence, see the change in cursor position. How did you learn the first sequence above`e[1m$pwdit's the font in bold and so it shows the variable$password🇧🇷 the second episode`e[2Amoves the cursor position. The number2is to define by how many positions the cursor should be moved andONEis an ANSI function for cursor up. Normally, this would happen so quickly that you wouldn't be able to see it. to take care of itsleep 5You pause the output for 5 seconds so you can see the cursor move.

Learn more about ANSI cursor placementhere.

"`e[1m$pwd`e[2A"; sleep 5

Using ANSI escape sequences in PowerShell (8)

Use ofSANSI string can also use offset to add padding to generated text. Series`e[3S$text`e[S3fills new lines from the bottom of the screen. the value that3is the number of lines to complete. There is also a scroll down sequence. You can read more about viewport placementhere.

#Scroll up (add 3 lines of space at top and bottom)$text ='#PS7Ahora'recording output"`e[3S$texto`e[3S"

Using ANSI escape sequences in PowerShell (9)

(Video) Powershell ANSI FileInfo color support for ANSI escape sequences

Cursor positioning and text modification

ANSI escape sequences can also change the cursor position. While the possibilities are endless, one way is to save and restore the cursor position. To save the current cursor position, use the sequencesafter the control sequence introducer. This doesn't change the chain output in any way, it just saves the position to restore later. by variable$text#PS7 outputs now use the recovery sequence which istu🇧🇷 This places the cursor on the#Character. If the cursor is at this point, you can use a text modifier to remove the leading #. The ANSI sequence to delete a character isP. Los1before the P is the number of characters to be removed. Executing the following line of code results in the#deleted character. Simple, silly, but fun!

$text ='#PS7Ahora'recording output"`e[s$text`e[u`e[1P"

Using ANSI escape sequences in PowerShell (10)

Some other text editing sequences worth mentioning are screen wipe and inline wipe. Since I'm having trouble finding a practical use for this at the moment. I can imagine them coming in handy as part of an April Fools joke. Let's say you have a colleague who is obsessed with your quick ad. you could add`e[s`e[u`e[Kfor the request function. ThesjtuSaving and restoring the cursor position as you already learned.kin the inline delete string that replaces all text on the line with spaces. Which will effectively destroy your quick function.

delete a line

$text ='#PS7Ahora'recording output"`e[s`e[36m$prueba`e[u`e[K`e[0m"

Using ANSI escape sequences in PowerShell (11)

Another fun sequence can be clearing the entire screen. The order for this is<n>J, wo<n>is the number of spaces to replace the display.

clear screen

$text ='#PS7Ahora'recording output"`e[2J`e[36m$text`e[0m"

Using ANSI escape sequences in PowerShell (12)

Read more abouttext changejcursor positioning.

keep readingANSI-Escape-Sequence.

Basic foreground and background colors

The original ANSI specifications only had 8 colors that could be used to specify foreground and background colors. Parameters SGR ("Select Graphics Reproduction") 30-37 selected the foreground color while 40-47 selected the background. You can use these color sequences with theSubwaySGR function to change foreground and background color of text. Remember to reset your sequences.

corVordergrund codebackground code
$fgCores ='30','31','32','33','34','35','36','37'$bgFarben ='40','41','42','43','44','45','46','47'for each($fgFarbeinside$fgColors){ $bgColor = $bgColors | Receive random write output"`e[$($fgFarbe)m#PS7`e[0m`e[30;$($bgFarbe)m Now `e[0m`e[7;$($fgFarbe);$($bgFarbe)m >_ `e[0m"}

Using ANSI escape sequences in PowerShell (13)

(Video) ansiEscapeSequences

8-bit, 256-color background and foreground

If 8 colors aren't enough, they might not be. You can also use 8-bit stream which offers a color gamut of 265 colors. The ANSI string for using 8-bit color is`e[<foreground or background code>;5;(n)a(Nord)represent the 8-bit color code. The foreground is indicated by38and the bottom is48🇧🇷 An example string could look like this:`e[38;5;220m#PSAhora🇧🇷 This sequence changes the foreground color to a dark yellow. The 256 color palette has different sections; 0-7 are standard colors, 8-15 are high intensity colors, 16-231 are a 6x6x6 color cube, and 232-255 are grayscale colors.

ESC[ 38;5;⟨n⟩ m Select foreground color

ESC[ 48;5;⟨n⟩ m Select background color

0-7: standard colors

8-15: High intensity colors

16-231: 6 × 6 × 6 cubes (216 colors)

232-255: Grayscale

_Read more aboutANSI escape code colors._

You probably haven't memorized the color codes for the 256 available colors. Alright, you can send them to the terminal for reference. The following script block will generate all foreground and background colors along with your code.

Foreground and background graphics with 256 colors$esc=$([Characters]27) Eco"`n$esc[1;4m256 foreground and background color tables$esc[0m"for each($fgbginside38,48) {# Change foreground/background for each($ corinside0..255) {# Range of colors #show color$campo ="$cor".PadLinks(4)# Fill the chart fields with spacesEscribir-Host -NoNewLine"$esc[$fgbg;5;${color}m$campo $esc[0m" # Show 6 colors per line e(($cor+1)%6)-Gl4 ) { Eco"r"} } eco `n}

By using sequence, you can create very interesting text. Below are some examples that generate #PS7Now and some ANSI layouts for the PowerShell icon.

"`e[38;5;27m#PS7`e[1mAhhora `e[22;38;5;15;48;5;27m >_ `e[0m"

Using ANSI escape sequences in PowerShell (14)

"`e[38;5;248m#PS7`e[1mAhora `e[22;38;5;15;48;5;237m >_ `e[0m"
(Video) Using ANSI escape codes in Powershell prompt to add color, looses meaning after executing some...

Using ANSI escape sequences in PowerShell (15)

Quick modification with ANSI

You are now armed with enough knowledge to dive into the world of hardcore ad customization! Rather than address that within the scope of this post, I will refer you to several other sources for inspiration.

Basics to Boss: Customize Your PowerShell Prompt by Thomas Rayner

Brief example by Thomas Rayner

How to Make a Beautiful Note in Windows Terminal Using Powerline, Nerd Fonts, Cascadia Code, WSL and oh-my-posh

Anatomy of a Display (PowerShell) by Brad Wilson

Customize Your PowerShell Prompt with Nerd Fonts and ANSI Escape Sequences by Trevor Sullivan


Before writing this blog post, I didn't know anything about ANSI escape sequences, let alone the ANSI escape character. I must give credit where credit is due and list all the sources I used to understand ANSI escape sequences.

The (largely) dependency-free PowerShell Prompt – Part 1


Bash Notes: Colors and Formatting (ANSI/VT100 Control Sequences)


Scripts for virtual console terminals

How to use ANSI/VT100 format in PowerShell

(Video) The Basics of ANSI Sequences

ANSI escape sequences

Create your own command line using ANSI escape codes

PowerShell 7 Authors of the Week blog

Authorbloodthe blog
Josef Rey@WindosNZ
Joseph Duffney@joshduffney
Adam Bertram@adbertram
Mike Kanko@MikeKanakos
jonathan cube@jonathanmedd
Thomas Lee@the doctor
Prateek Singh@singhprateik
david carroll@davecarroll
and francisco@dan_franciscus
Jeff Hicks@JeffHicks
Tommy Maynard@tommymaynard


Does PowerShell support ANSI escape codes? ›

PowerShell has many features that support the use of ANSI escape sequences to control the rendering of output in the terminal application that's hosting PowerShell. PowerShell 7.2 added a new automatic variable, $PSStyle , and changes to the PowerShell engine to support the output of ANSI-decorated text.

Do ANSI escape codes work on Windows? ›

Starting from Windows 10 TH2 (v1511), conhost.exe and cmd.exe support ANSI and VT100 Escape Sequences out of the box (although they have to be enabled). See my answer over at superuser for more details. The 105xx builds was the only builds having VT100 sequences enabled by default.

How do I escape special characters in PowerShell? ›

The PowerShell escape character is the backtick "`" character.

What is the escape sequence for PowerShell? ›

PowerShell supports a set of special character sequences that are used to represent characters that aren't part of the standard character set. The sequences are commonly known as escape sequences. Escape sequences begin with the backtick character, known as the grave accent (ASCII 96), and are case-sensitive.

How do I use ANSI codes in Windows? ›

To use ANSI colours in the Windows terminal requires setting VirtualTerminalLevel. VirtualTerminalLevel = 1 is now set by default for the terminal and in ConPTY. Alternatively it can be enabled by calling the SetConsoleMode API with the ENABLE_VIRTUAL_TERMINAL_PROCESSING flag.

What are 3 drawbacks of PowerShell? ›

Following are the few disadvantages of PowerShell:
  • Framework: It requires . ...
  • Object-based: With most shells, the text-based commands are used to get the work done while writing scripts. ...
  • Security risks: Another drawback of using PowerShell is that it can create some potential security risks.

What is ANSI escape code in CMD? ›

An ANSI escape sequence is a sequence of ASCII characters; the first two are the escape character (1Bh) and the left bracket character (5Bh). The character or characters following the escape and left bracket characters specify an alphanumeric code that controls a keyboard or display function.

How do ANSI escape codes work? ›

ANSI Escape Sequences are instructions for consoles to position the cursor, change and set color and fonts and perform other operations. These instructions are encoded in a series of characters whose first byte is the escape character (ASCII 27, octal \033 , hex 0x1b ).

How do I enable ANSI? ›

The registry key at HKEY_CURRENT_USER\Console\VirtualTerminalLevel sets the global default behavior for processing ANSI escape sequences. Create a DWORD key (if necessary) and set its value to 1 to globally enable (or 0 to disable`) ANSI processing by default.

How do I pass a password with a special character in PowerShell script? ›

For example, if the password contains a dollar sign ($) it must either be preceded by a grave accent ` (also known as a backtick: ASCII code 96 - Alt+96) or the password encapsulated in single ' ' to pass the password to PowerShell exactly as entered.

How do I skip a condition in PowerShell? ›

The Break statement is used in PowerShell to exit the loop immediately.
Break Statement
  1. PS C:\> for($a=1; $a -lt 10; $a++)
  2. >> {
  3. >> if ($a -eq 6)
  4. >> {
  5. >> break.
  6. >> }
  7. >> echo $a.
  8. >> }

How do I remove all special characters from a string? ›

The str. isalnum() method checks a string for the alphabet or number, and this property is used to remove special characters. The replace() method is used to replace special characters with empty characters or null values.

What does @{} mean in PowerShell? ›

To create an array, we create a variable and assign the array. Arrays are noted by the "@" symbol.

Does PowerShell support Unicode? ›

PowerShell uses a Unicode character set by default. However, several cmdlets have an Encoding parameter that can specify encoding for a different character set. This parameter allows you to choose the specific the character encoding you need for interoperability with other systems and applications.

How do you use escape sequence? ›

Character combinations consisting of a backslash (\) followed by a letter or by a combination of digits are called "escape sequences." To represent a newline character, single quotation mark, or certain other characters in a character constant, you must use escape sequences.

What is ANSI encoding used for? ›

In order to display a text document properly, the ANSI encodes an extended set of symbols. There are some instruments to convert files like Notepad application or a default editor in Windows. Using these tools you can convert text into the ANSI format.

What are ANSI codes used for? ›

American National Standard Institute (ANSI) codes are used to explain the adjudication of a claim and are the CMS approved. Group codes must be entered with all reason code(s) to establish financial liability for the amount of the adjustment or to identify a post-initial-adjudication adjustment.

What is ANSI formatting? ›

The ANSI source format divides an input line into several fields. These are determined by character position. Each input line must be 80 characters. Input lines that are shorter than 80 characters are padded with spaces to make 80 characters, while lines longer than 80 characters are truncated on the right.

Why do hackers use PowerShell? ›

PowerShell was used to carry out the critical piece of the attack. The PowerShell script was used to disable Windows Defender's antivirus prevention capabilities like real-time detection, script and file scanning and a host-based intrusion prevention system.

Is PowerShell more powerful than cmd? ›

PowerShell is significantly more powerful and rich in capabilities compared to CMD.exe; it's able to manage hundreds of machines across different platforms whereas CMD.exe is only capable of executing much simpler tasks on a smaller scale.

Do hackers use PowerShell? ›

It may surprise you to know that PowerShell is very popular with hackers who use it to find security holes in enterprise IT systems. If you've read some of our other pen testing blogs, such as this article on pen test reports, you know that finding holes in security systems is what pen testers do as well.

What is ANSI vs VT100? ›

VT100 incorporates VT52 escape sequences with colour extensions. ANSI refers to the use of ANSI escape codes to do the same thing, while VT-UTF8 is a Microsoft specification - which, as you guessed, passes UTF-8.

How do I escape special characters in cmd? ›

Windows Command Prompt

The Windows command-line interpreter uses a caret character ( ^ ) to escape reserved characters that have special meanings (in particular: & , | , ( , ) , < , > , ^ ).

What is ANSI escape codes 033? ›

\033 stands for ESC (ANSI value 27). ESC [ is a kind of escape sequence called Control Sequence Introducer (CSI). CSI commands starts with ESC[ followed by zero or more parameters.

What is the ANSI escape code for clear? ›

ANSI escape sequences can be used to change the color of text and move the cursor, but for clearing the console we're after one particular code, [2J . We'll need to preface this code with the escape code, which is x1b in hexadecimal, 033 in octal, or u001b in unicode (all equivalent to eachother).

What is the ANSI escape code for delete character? ›

The delete control character (also called DEL or rubout) is the last character in the ASCII repertoire, with the code 127.

How do I enable color codes in Windows Terminal? ›

Click the menu (down-arrow) button and select the Settings option. Click on the profile – for example, Command Prompt. Under the “Additional settings” section, click the Appearance setting. Use the Color scheme setting and select the color scheme for the Windows Terminal profile.

Does Windows CMD support color? ›

Color is an inbuilt command found inside the Windows Command Processor (cmd.exe), that is used for changing the colors for the console's foreground and background.

How do I reset the color in Windows Command Prompt? ›

To set the default Command Prompt window color, select the upper-left corner of the Command Prompt window, select Defaults, select the Colors tab, and then select the colors that you want to use for the Screen Text and Screen Background.

How do I pass credentials in PowerShell without prompt? ›

Create a Credential without a Prompt
  1. $password = ConvertTo-SecureString 'MySecretPassword' -AsPlainText -Force. Copy.
  2. $credential = New-Object System. Management. ...
  3. PS> $credential. UserName root. ...
  4. PS> $credential. GetNetworkCredential() UserName Domain -------- ------ root. ...
  5. PS51> $credential. GetNetworkCredential().
Jun 14, 2019

What does F7 do in PowerShell? ›

If you have been entering several commands in a console screen, pressing the F7 function key displays a menu of the previously executed commands, as Figure 2.2 shows. Figure 2.2. Pressing the F7 function key presents a command history menu. Use the arrow keys to change the selection in the menu.

What character encoding is PowerShell? ›

In Windows PowerShell, the default encoding is usually Windows-1252, an extension of latin-1, also known as ISO 8859-1.

What is :$ false in PowerShell? ›

PowerShell Boolean operators are $true and $false which mentions if any condition, action or expression output is true or false and that time $true and $false output returns as respectively, and sometimes Boolean operators are also treated as the 1 means True and 0 means false.

What does $$ mean in PowerShell? ›

$$ is a variable containing the last token of the last line input into the shell. (does not contain the whole command) $^ is a variable containing the first token of the last line input into the shell. (does not contain the whole command) $? is a variable containing the success or failure of the last statement.

How do I skip a current loop iteration in PowerShell? ›

Continue statement in PowerShell is used to skip the current execution of the loop and to return the execution to the top of the innermost loop. Continue statement is generally used with the conditional statement which is controlled by loops like While, For and Foreach.

What is the regex for removing special characters? ›

To remove all special characters from a string, call the replace() method on the string, passing a whitelisting regex and an empty string as arguments, i.e., str. replace(/^a-zA-Z0-9 ]/g, '') . The replace() method will return a new string that doesn't contain any special characters.

How to remove characters using regex? ›

How to remove text in brackets and parentheses using regex
  1. On the Ablebits Data tab, in the Text group, click Regex Tools.
  2. On the Regex Tools pane, select your source strings, enter your regex, choose the Remove option, and hit Remove. To get the results as formulas, not values, select the Insert as a formula check box.
Oct 21, 2022

How do you remove all characters in a string except alphabets? ›

Algorithm to remove all characters in a string except alphabets
  1. Input the string from the user.
  2. Traverse the string, character by character.
  3. If the character is not an alphabet, do not add it to the resultant string.
  4. If the character is an alphabet, add it to the resultant string.
  5. Print the string.
Mar 10, 2020

What is Exitcode in PowerShell? ›

When PowerShell runs the last command in a script, it stores the exit code of that last command in the $LASTEXITCODE variable. There are two default exit codes: 0 – meaning success: normal termination. 1 – meaning failure: an uncaught throw.

What kind of code does PowerShell use? ›

Scripting language

PowerShell is built on the . NET Common Language Runtime (CLR). All inputs and outputs are . NET objects.

Is IT possible to hack with PowerShell? ›

PowerShell is a powerful tool for system administration; as such, it is also the perfect entry point for hackers. Due to PowerShell's tight integration into the system, attempts to simply block it provide a false sense of security.

What is exit code 5 in PowerShell script? ›

Error Code 5 is a Windows error code that appears when the user does not have sufficient permission to access the requested file or location. It appears when the software was denied access to a location for the purposes of saving, copying, opening, or loading files.

What is exit 4 in shell script? ›

A Bash script can obey this convention by using the built-in command exit . The following command: exit 4. terminates the shell script, returning an exit status of four, indicating some sort of error.

What is exit code 200 in PowerShell? ›

Here 200 code means the connection is successful and no error on the webpage.

Does ANSI support Unicode? ›

ANSI characters 32 to 127 correspond to those in the 7-bit ASCII character set, which forms the Basic Latin Unicode character range.

Is UTF-8 the same as Unicode? ›

The Difference Between Unicode and UTF-8

Unicode is a character set. UTF-8 is encoding. Unicode is a list of characters with unique decimal numbers (code points).

How do I use special characters in PowerShell? ›

Special Characters List:
  1. `0 – Null.
  2. `a – Alert.
  3. `b – Backspace.
  4. `e – Escape.
  5. `f – Form Feed.
  6. `n – New Line.
  7. `r – Carriage Return.
  8. `t – Horizontal Tab.
Jun 29, 2018

Is PowerShell an OOP language? ›

PowerShell is an object-oriented programming language associated to the PowerShell command-line shell. Object-oriented means, that it uses objects to transfer data.

Why is PowerShell so powerful? ›

Microsoft's PowerShell is a cross-platform configuration management framework that enables the seamless administration of various managed elements of computing objects. It is most commonly used to automate systems management and to build, test, and deploy solutions in CI/CD environments.

Is PowerShell the best scripting language? ›

PowerShell is one of the best entry points into programming because it's widely used and easy to learn. Let's explore a smattering of solid reasons why PowerShell is a great first language for learners.


1. PWSH ANSI escape sequences
2. How to use the escape character in PowerShell
(TechSnips by ATA Learning)
3. Enable ANSI/VT100 Escape Sequences (Windows 10)
(Patrick Jackson)
4. C Programming - using ANSI escape codes on Windows macOS and Linux terminals
(AtoZ Programming Tutorials)
5. ANSI Extension And Escape Characters
(Calm Energy)
6. Shell Escape Tricks for Bash & Powershell - Hak5 2508


Top Articles
Latest Posts
Article information

Author: Dan Stracke

Last Updated: 09/09/2023

Views: 5762

Rating: 4.2 / 5 (43 voted)

Reviews: 82% of readers found this page helpful

Author information

Name: Dan Stracke

Birthday: 1992-08-25

Address: 2253 Brown Springs, East Alla, OH 38634-0309

Phone: +398735162064

Job: Investor Government Associate

Hobby: Shopping, LARPing, Scrapbooking, Surfing, Slacklining, Dance, Glassblowing

Introduction: My name is Dan Stracke, I am a homely, gleaming, glamorous, inquisitive, homely, gorgeous, light person who loves writing and wants to share my knowledge and understanding with you.