Standard MouseClick & MouseMove functions have got hardcoded Sleep(10) even if you use minimal value for speed parameter (analysed from Autoit's 3.1.0 sources) so if you need really fast mouse clicking/moving then use my MouseClickFast & MouseMoveFast X,Y coordinates are in absolute (screen) meaning. Func _MouseClickFast($x, $y) $x = $x*65535/@DesktopWidth $y = $y*65535/@DesktopHeight _WinAPI_Mouse_Event(BitOR($MOUSEEVENTF_ABSOLUTE, $MOUSEEVENTF_MOVE), $x, $y) _WinAPI_Mouse_Event(BitOR($MOUSEEVENTF_ABSOLUTE, $MOUSEEVENTF_LEFTDOWN), $x, $y) _WinAPI_Mouse_Event(BitOR($MOUSEEVENTF_ABSOLUTE, $MOUSEEVENTF_LEFTUP), $x, $y) EndFunc Func _MouseMoveFast($x, $y) $x = $x*65535/@DesktopWidth $y = $y*65535/@DesktopHeight _WinAPI_Mouse_Event(BitOR($MOUSEEVENTF_ABSOLUTE, $MOUSEEVENTF_MOVE), $x, $y) EndFunc EDIT: You can speed up it little bit with this modification: $x_koef = 65535/@DesktopWidth $y_koef = 65535/@DesktopHeight $User32 = DllOpen("User32.dll") Func _MouseClickFast2($x, $y, $User32 = "User32.dll") $x *= $x_koef $y *= $y_koef DllCall($User32, "none", "mouse_event", "int", 32769, "int", $x, "int", $y, "int", 0, "int", 0) ; 32769 0x8001 BitOR($MOUSEEVENTF_ABSOLUTE, $MOUSEEVENTF_MOVE) DllCall($User32, "none", "mouse_event", "int", 32770, "int", $x, "int", $y, "int", 0, "int", 0) ; 32770 0x8002 BitOR($MOUSEEVENTF_ABSOLUTE, $MOUSEEVENTF_LEFTDOWN) DllCall($User32, "none", "mouse_event", "int", 32772, "int", $x, "int", $y, "int", 0, "int", 0) ; 32772 0x8004 BitOR($MOUSEEVENTF_ABSOLUTE, $MOUSEEVENTF_LEFTUP) EndFunc Func _MouseMoveFast2($x, $y, $User32 = "User32.dll") $x *= $x_koef $y *= $y_koef DllCall($User32, "none", "mouse_event", "int", 32769, "int", $x, "int", $y, "int", 0, "int", 0) ; 32769 0x8001 BitOR($MOUSEEVENTF_ABSOLUTE, $MOUSEEVENTF_MOVE) EndFunc EDIT2: Max achieved clicks per second: MouseClick - 100 _MouseClickFast - 4000 _MouseClickFast2 - 5000 Note: these speeds are related to target app where is clicked, in some of them speed is worse because of their reaction. Whole testing script: #AutoIt3Wrapper_useupx=n #include <Constants.au3> #include <WinAPI.au3> Opt('MouseClickDelay',0) Opt('MouseClickDownDelay',0) Opt('MouseClickDragDelay',0) HotKeySet("^{F1}", "Start") HotKeySet("{ESC}", "Terminate") Global $User32 Global $x_koef, $y_koef ;~ Start() While 1 Sleep(0) WEnd Func Start() $start = TimerInit() For $i = 1 to 1000 MouseClick('left', 500, 500, 1, 0) Next ConsoleWrite('MouseClick: ' & TimerDiff($start) & @CRLF) $start = TimerInit() For $i = 1 to 1000 _MouseClickFast(500, 500) Next ConsoleWrite('_MouseClickFast: ' & TimerDiff($start) & @CRLF) $start = TimerInit() $x_koef = 65535/@DesktopWidth $y_koef = 65535/@DesktopHeight $User32 = DllOpen("User32.dll") For $i = 1 to 1000 _MouseClickFast2(500, 500, $User32) Next DllClose($User32) ConsoleWrite('_MouseClickFast2: ' & TimerDiff($start) & @CRLF) MsgBox(0,'Info','hotovo') EndFunc Func Terminate() Exit EndFunc Func OnAutoitExit() HotKeySet("^{F1}") HotKeySet("{ESC}") EndFunc Func _MouseClickFast($x, $y, $User32 = "User32.dll") $x = $x*65535/@DesktopWidth $y = $y*65535/@DesktopHeight DllCall($User32, "none", "mouse_event", "int", BitOR($MOUSEEVENTF_ABSOLUTE, $MOUSEEVENTF_MOVE), "int", $x, "int", $y, "int", 0, "int", 0) DllCall($User32, "none", "mouse_event", "int", BitOR($MOUSEEVENTF_ABSOLUTE, $MOUSEEVENTF_LEFTDOWN), "int", $x, "int", $y, "int", 0, "int", 0) DllCall($User32, "none", "mouse_event", "int", BitOR($MOUSEEVENTF_ABSOLUTE, $MOUSEEVENTF_LEFTUP), "int", $x, "int", $y, "int", 0, "int", 0) EndFunc Func _MouseClickFast2($x, $y, $User32 = "User32.dll") $x *= $x_koef $y *= $y_koef DllCall($User32, "none", "mouse_event", "int", 32769, "int", $x, "int", $y, "int", 0, "int", 0) ; 32769 0x8001 BitOR($MOUSEEVENTF_ABSOLUTE, $MOUSEEVENTF_MOVE) DllCall($User32, "none", "mouse_event", "int", 32770, "int", $x, "int", $y, "int", 0, "int", 0) ; 32770 0x8002 BitOR($MOUSEEVENTF_ABSOLUTE, $MOUSEEVENTF_LEFTDOWN) DllCall($User32, "none", "mouse_event", "int", 32772, "int", $x, "int", $y, "int", 0, "int", 0) ; 32772 0x8004 BitOR($MOUSEEVENTF_ABSOLUTE, $MOUSEEVENTF_LEFTUP) EndFunc