Dim $In = "BWAABBBWAABWWWAABWAAAAAABWAABWAABWAA" Dim $Out = "" Dim $Char = StringSplit($In,"") Dim $Buffer = "", $i = 1 Dim $Result[1] While $i <= $Char[0] $Buffer &= $Char[$i] If ($i+1 <= $Char[0]) AND (Not ($Char[$i] == $Char[$i+1])) Then _Add($Buffer) $Buffer = "" EndIf $i += 1 WEnd _Add($Buffer) For $i = 1 to UBound($Result)-1 If (StringLen($Result[$i]) == 1) Then $Out &= $Result[$i] Else $Out &= StringLen($Result[$i]) & StringLeft($Result[$i],1) EndIf Next ConsoleWrite("String length before: " & StringLen($In) & @CRLF) ConsoleWrite("String length after: " & StringLen($Out) & @CRLF) ConsoleWrite("KB saved: " & ((StringLen($In)-StringLen($Out))/1024) & " ( " & (StringLen($In)-StringLen($Out)) & " bytes or " & Round((StringLen($In)-StringLen($Out))/StringLen($In)*100,1) & "% )" & @CRLF) ConsoleWrite("In : " & StringLeft($In,100) & @CRLF) ConsoleWrite("Out: " & StringLeft($Out,100) & @CRLF) Func _Add($String) $n = UBound($Result) Redim $Result[$n+1] $Result[$n] = $String EndFunc