Razor - UO:R Community Edition

Razor is a free tool designed to help with simple tasks while playing Ultima Online.

About Razor

What is this project's goal?

The purpose and goal of this project is to revive and continue development of the abandoned Razor project and focus on "quality of life" improvements without driving down the path of automation and advanced scripting that is available in other assistants.

This project also attempts to keep the spirit and vision of the original Razor intact the original developers had for Razor.


Razor was originally designed by Bryan Pass, known as Zippy in the RunUO community as a replacement to UOAssist. Based on commit notes, active development on Razor ceased some time in the early 2010's with the source code being released in 2014.

The code initially didn't include Crypt.dll and Loader.dll which are required to full integration with UO. At some point, the code was released into the same GitHub repo.

This version of Razor is based off of, which is simply version updated from .NET 2.0 to .NET 4.0. Another version of Razor exists (the 1.0.14.x versions) and is/was maintained by another private shard that make some enhancements, notable around targeting. This version of Razor has incorporated the majority of changes you can find in those versions.

The original project was last updated May 2nd, 2014 and while over 50 forks exist on GitHub, none have been active or have made significant changes except for a few exceptions.

  • Jaedan (which this version is based on) who updated the project to compile and work in Visual Studio 2017 and made improvements to Crypt.dll that enabled this project to move forward.
  • uoitalia who made several performance changes from generic to non-generic collections that I incorporated in the first release.

Since early 2018, this project has been been active and for a year implemented many quality of life changes (see 1.5.0.x release notes) before moving to full integration into ClassicUO in mid-2019.

If you want to contribute to the project, check out CONTRIBUTING.md over on the GitHub repo.

Why is it the UO:R Community Edition?

When I started this project back in early 2018, nearly all the feedback, ideas, discussion and testing has came from the UO:Renaissance community and so that name was used to not only distingush between other versions of Razor that are available but give credit to a community.

Over a year later, this version of Razor was updated to support the ClassicUO client. Since then, feedback has come from all different corners of the freeshard UO community.

TL;DR: If you want to use this version of Razor, regardless of the Ultima Online server you play on, this version should work. This version isn't tied to any specific shard. These updates to Razor are for all the Ultima Online Community to use and benefit from. Play UO on the shard that gives you the most enjoyment.

For me, that shard is UO:Renaissance.


This version of Razor is portable. All files (Profiles, Macros, etc) are contained within the same folder as Razor

Simply download the version you're looking for and extract into a new folder and run it from there.

You can view release notes for each version. Visit the help section for additional details.


OSI Client


    SHA256: 63D0B617FCE217C067A3270323C9E58B63F379F401B4224E0EA937DAA7871B8B


    SHA256: 64916F16A72FDE5E9C17B3A180001A896E9472458C8DB69E09DC7E37D78A6B30


    SHA256: 1D352F7814311FDBFC3EF16DEAD6664562C85B3817D953112F687099A98D104A


    SHA256: 090D753820B791E115532E96703DE1650B4DB0CE88191355D0F65A5799A51571


    SHA256: 1AC1DAFBBDEE3DBEB1D031E63CAF904D43B60A05E98CB83ECA4872F892BD4F36


    SHA256: 5945E5F9D5C87FEF552881C319167BD4ED012AE01D31FA855449B034129F7225




    SHA256: 63158C8987BA0E7FBBA5917018595617830CF7B72A699A50A34F79A943365EE0


    SHA256: 0D25D01C85CFC8BA51D4FFEEBF59A3DC23B2400850A4B41C613DFC50AFAD5487


    SHA256: BD239C8F10FB80C3D1F6D185557679A0FCCF0CE35B2DB6D726B0DB0DB8BE7B7A


This version of Razor is identical to version except with one major change to how Razor figures our your position to address the Razor "desync" issue.

Some users have reported issues when logging in so that is why this version is marked as expermental. If you experience issues, please revert to


    SHA256: D26E8B887FC26B94FB5B0C50530BE07A4393783CCBEAA9C3FD5B38171A857571

Validate Checksum

  • Windows (using Powershell)

    • Get-FileHash '.\Razor_UOR_CE-1.5.X.X.zip' -Algorithm SHA256


    • shasum -a 256 /path/to/Razor_UOR_CE-1.5.X.X.zip' -Algorithm SHA256

Release Notes

Below is a list of the latest releases notes going back to the initial version (05/17/2020)

  • Fixed any errors related to systray and long titles
  • Razor supports Linux again after fixing issues related to the new script editor
  • Fixed issues with dclicktype and targettype range check (both Macros and Scripts)
  • Fixed a few packet exception issues when logging in or casting spells
  • Script engine optimizations (better error reporting, better timeout/pause handling)
  • Fixed issues related to waitfortarget/wft not working correctly
  • Fixed issues with nested if/else/endif
  • Fixed the 'lasttarget' variable
  • Added 'hidden' expression
  • Fixed 'findtype' expression
  • Added range check to 'findtype'
  • Fixed righthand, lefthand and hand variables/aliases
  • Field to filter scripts in the UI
  • Added hotkey to add party members (/add)
  • Added feature to convert macros to scripts (right-click macro and convert)
  • Backup will include Razor Scripts
  • Added support for Mystic and Masteries
  • Show Attack message when using Attack Last Target hotkey & v1.6.3.43 (03/16/2020)

This version introduces a new scripting engine that makes it easier to create and share macros.

For more information, visit the Razor Scripting Engine Guide.

(NOTE: This is a hotfix for anyone having a CultureNotFoundException error on Windows 7 which fixed)

  • Introduction of the Razor Scripting Engine (thanks to everyone for your time testing and providing feedback)
  • New Sound & Music Tab: Filter out any game sound, trigger music and listen to any sound
  • Added while loop to the macro system
  • Fixed issue with auto-screenshot not working with players with invalid characters in their name
  • Enforce your min light level on login
  • You can extract specific words from the system message to display in the overhead messages (…{1}. {2}, etc for the first, second word)
  • Added Set Macro Variable Target Action to macros that will pause until you set a variable (same behavior as "Set Last Target")
  • Razor's Last Object (hotkey and macro/scripts) should work as expected
  • >hue and >item commands are a bit more informative
  • You can copy/paste friends list when you aren't actually logged in
  • Added option to have next/prev friend highlight friend in Friends tab
  • The Discord overlay shouldn't cause any access violations
  • SysTray will go away on close (instead of leaving ghost ones behind) (12/18/19)

  • Changed interrupt order to start shirt, shoes, pants
  • Fixed Edit button on Overhead Message UI
  • Capture compressed gumps for WaitForGump
  • Additional UI SafeActions
  • Added ability to filter out mobiles from being targeted
  • Added if [skill] to macros
  • Fixed invalid cast error on "if [counter]"
  • Fixes a bug were when changing a character in same account, using different profiles (not default), causes a sudden lockdown of razor window, that also locks ClassicUO from loading, causing a crash after a while.
  • Double clicking Overhead Message macro action now opens Input box for editing message instead of Pause action menu.
  • Bandage timer will restart if bandage is applied before it ends
  • Using 'Add Target' under the friends tab will give you a target
  • Renaming a macro removes the old entry from the hotkey list
  • Added Set HotKey button to macro UI
  • Added >set command to set macro variables in-game
  • Prioritize key that triggered event, include number row in SDL keymap
  • For ClassicUO, dont trigger Hotkey.OnKeyDown if key is a modifier key
  • UOPS displays Trammel and TerMur correctly
  • Fixed issue with GumpReponses with text entries not loading
  • Bandage timer will stop on "You did not stay close enough to heal your target.
  • Bandage timer will reset if you bandage yourself before finishing
  • Remove packet block on 0xF0 when using ClassicUO to allow party tracking in WorldMap
  • Added mobile filter for daemons (08/05/19)

  • Next/Previous will only set Beneficial when using Next/Prev Friend
  • Changed Razor commands from - to > (ie: -hue is >hue)
  • Next/Previous Target will check if the target is a friend
  • Next/Previous Friendly can be set to only set Beneficial
  • Next/Previous Non-Friendly can be set to only set Harmful
  • Fix to how names are handled per mobile
  • Pet & Boat commands now use the speech override hue
  • Enabled the seasons dropdown when using ClassicUO
  • Fixed ContextMenu not recording & execution
  • AbsoluteTargetVariables and DoubleClickVariables have been merged into MacroVariables.
  • When adding an Overhead Message, if it doesn't exist in the list you will be prompted to add it anyway
  • Fixed issue with Friends and Dress lists not always loading when using ClassicUO
  • Improved the bandage timer to pick up additional start/stop messages
  • Set Last Beneficial & Set Last Harmful now have the proper system message
  • Friend hotkeys now display under a new "Friends" hotkey category
  • Buff/Debuff overhead messages can be filtered and hues changed
  • Added check to prevent multiple single-click flag checks
  • Additional SafeActions added to the UI
  • Added {name} as an option for the target indicator
  • Added the ability to edit the bandage start/stop messages
  • Fixed issue using the delete key when removing Friends
  • Updated the screenshot capture on death (option to add a delay, and to capture self death or death of others) (06/28/19)

After 57 builds, Razor now fully supports ClassicUO. Thanks to KaRaShO for his amazing work on this client. Thanks to Jaedan, DarkLotus, and everyone who helped test Razor and provided feedback.

  • Enabled support for ClassicUO and standard OSI client
  • Enabled cross-platform support (specifically Linux)
  • Several optimzations, tweaks, and overall improvements to Razor.
  • Queue Last/Self default to disabled
  • Auto-queue object delay default to disabled
  • Clean Config.cs formatting
  • Merged UltimaSDK
  • Add Grab HotKey & Set Grab Hotbag
  • New Next/Prev Hotkeys
    • Added Criminal, Murderer and Innocent Next/Prev hotkeys
    • Add Next/Previous for Friendly, Grey and Non-Friendly
    • Refactored the Next/Prev code
  • Added target sub-categories in HotKeys
  • Restored {mana} and {stam}
  • Added Toggle War and Toggle Peace only hotkeys
  • Added < and > to if macro actions
  • Added {maxhp}, {maxstam} and {maxmana} as variable options in the IfActions in macros
  • Added a Greater Heal/Cure hotkey, relabeled Heal/Cure Hotkey to "Smart Heal/Cure"
  • Support SmartLastTarget in AttackLastTarget
  • Added Set Beneficial and Harmful hotkeys
  • Added option to disable auto-open door when hidden
  • Added use item for Right or Left hotkeys
  • Added option to disable play/finished macro message
  • Next/Prev will ignore ghosts and blessed mobiles (just like random and closest)
  • Added ability to insert overhead messages in macros
  • Hotkey enable/disable messages will use warning or default Razor message hues. This should make it easier to see/read when you're hitting the hotkeys.
  • Next/Prev friend won't set them as a combatant
  • Added Insert Wait For Target for macros
  • Added option under Display/Counters to display bandage timer overhead or in system messages
  • Removed Friends Agent and added new Friends Groups
  • Create groups of friends
    • Enable/disable groups
    • Copy/paste friends in and out of Razor
  • Implemented filtering of repeating messages for system, Razor and overhead messages (03/17/19)

This version completely changes how Razor handles movement. Prior to this release, Razor would parse movement packets to determine your current X/Y/Z. During certain in-game actions, such as running when casting, this would sometimes cause you to desync. This is when the server thinks you're at a certain X/Y/Z and Razor thinks you're on another.

Razor will instead start a timer in the client that checks if the position has changed in client memory. When your position changes, it will send a message to notify Razor.

This way, Razor is no longer in the business of reading movement packets which should prevent you from ever desyncing.


  • Razor should no longer "desync" (usually experienced by people with lower pings).
  • Crypt.dll has been cleaned up and optimized. You should notice Razor and UO start up quicker.
  • If Razor has an issue verifying an animation for the filter dropdown, it will just load it by default.


  • The "Waiting.. Timeout" message when you're running a macro is easier to read.


  • If you use the "Add All Mobiles To Friends" it won't add the same person twice. (03/04/19)


  • Changed the position of the Quit button on the Welcome screen.
  • Removed packet and AVI recording since the feature has been sunset by modern applications and technology. If you need to watch or record packet videos, please use and older version. If you want to record videos, check out OBS.

Options->Speech & Messages

  • Added an Edit button to the Overhead message window to edit a message.
  • Added an option to show [Friend] overhead if that mobile is on your friends list.

Options->Targeting & Queues

  • Fixed issue with Next/Prev Humanoid still targeting friends even when the checkbox was checked.

Options->Additional Options

  • Combined "Always show stealth steps" and "Count stealth steps" into one checkbox. The Now counting stealth steps. message has been removed since it didn't have any logic to only fire off when stealth was successful. Utilize the Overhead message feature if you want to see something overhead on a successful stealth.
  • You can now customize the step message overhead.
  • The Static Wall and label checkbox will now load/save properly.


  • Added an option to show skill/stat gains overhead. (02/17/19)


  • Revamped the main Razor UI: As the feature set has grown, space has become limited. This initially led me down the road of expanding the window based on the top, but this started to prove to not be a good long term solution. I tried to keep the look and feel as close to Razor as possible.
    • Removed window adjusting size based on the tab. It's now a static size.
    • The "Options" tab now has sub-tabs with features broken into smaller categories.
    • The "More Options" tab has been removed and condensed into "Options"
    • The "Display/Counters" tab has been broken into two sub-tabs.
    • The "Macros" tab has been broken into two sub-tabs, instead of that little button to expand the window.
    • Numerous other slight adjustments.
  • Revamp of the Welcome UI: Just to go along with the main UI revamp.
    • More easily manage servers from the welcome UI
    • Warning if your UO Client Directory and UO Data Directory don't match (often a source of issues for people)


  • Razor now will record and play prompt actions (ie: renaming runes, renaming runebooks, etc).
  • Re-targeting a mobile on the DoubleClick action (ie: a horse) will work instead of having to re-record the double-click action.


  • Added a hotkey to add all the mobiles in range to your friends list.
  • Added hotkeys for all pet commands (all follow, all kill, etc). This does the exact same thing as a standard macro recorded saying the command.
  • The following targeting hotkeys exist in another version of Razor ( that was updated in 2017. They've been added in this version.
    • Closest Criminal Monster
    • Closest Innocent Monster
    • Closest Murderer Humanoid
    • Closest Murderer Monster
    • Random Criminal Monster
    • Random Innocent Monster
    • Random Murderer Humanoid
    • Random Murderer Monster
    • Next Monster Target
    • Previous Monster Target
  • The following targeting hotkeys are new to this version of Razor and did not exist in previous versions.
    • Closest Friendly Humanoid
    • Closest Friendly Monster
    • Closest Non-Friendly Humanoid
    • Closest Non-Friendly Monster
    • Random Friendly Humanoid
    • Random Friendly Monster
    • Random Non-Friendly Humanoid
    • Random Non-Friendly Monster
    • Closest Mobile
    • Random Mobile


  • When you change your profile, the animation filter list will properly reload.

Options->Targeting & Queues

  • Added option to change the text of the target indictor.
  • Added option to prevent Next/Prev target hotkeys from targeting friends. (01/16/19)


  • Added a damage tracker feature that can be enabled/disabled via a hotkey that will track the following:
    • DPS (Damage Per Second)
    • Final DPS
    • Max DPS
    • Total Damage Dealt
    • Total Damage Taken
    • Max Single Damage Dealt (and to which mobile)
    • Max Single Damage Taken
    • Top 5 Damage Dealt By Name (ie: if you kill dragons for an hour, it will give you the total damage you dished out to all those dragons)
  • When you stop the damage tracker, the stats above will be displayed in your client and journal.
  • Updated the UO Title Bar to accept the following variables to display the tracked values above: {dps}, {maxdps}, {maxdamagedealt}, {maxdamagetaken}, {totaldamagedealt}, {totaldamagetaken}
  • You can change the text in Razor's title bar just as you can with the UO title bar.


  • Added the ability to toggle Dragons and Drakes to use a different graphic. This will have the same effect as those who use the "artmods" to replace the large dragon graphic will a small dragon or some other graphic completely (Blackthrone is a popular one). In other words, only you will see the graphic change.
  • Minor UI tweaks you may or may not notice.

Hot Keys

  • Added a hotkey that will only enable hotkeys (not toggle on/off).
  • Added a hotkey that will only disable hotkeys (not toggle on/off).


  • Added UOAssist API support back into Crypt so Ultima Mapper and other applications that use that will work with this version of Razor.
  • Added buttons to quickly open UOAM or Ultima Mapper from the Maps tab.


  • Added the ability to filter macros for easy searching.

More Options

  • You can now set individual hue colors for overhead messages.
  • Damage indicators in UO don't show up in your journal. Added an option to have damage dealt and damage taken display overhead or in the lower-left which will have it log to your journal. (01/01/19)

More Options

  • Added option that will turn magic fields/walls into static tiles.
  • Updated the attack name overhead feature to include the names of targets acquired via hotkeys.
  • Added option to display a text target indicator over a newly acquired target.
  • You can no longer open up multiple container label and overhead message windows.


  • Along with AbsoluteTarget variables, you can now create DoubleClick variables. NOTE: The goal of these macro variables is allow macros to be shared across multiple characters without requiring cloned copies of the macros.
  • You can retarget to Lift and LiftByType actions (instead of having to record, re-lift new item, stop recording, delete old action)
  • Pausing a macro when one isn't running will no longer cause a crash.
  • Copy/pasted macro lines won't appear "linked" and will work across other macros.

Maps (12/25/18)


  • Fixed the issue that was causing the "filter exceptions" popup
  • The -ping command will display the correct value for the average
  • Entering the wrong -command will no longer result in an error popup
  • The previous version reverted Razor from using the updated visual style back to the older looking style due to a Windows patch last month (KB4459942). This has been fixed.


  • Fixed the issue with Absolute Target Variables not saving correctly in a macro


  • Like the Organizer Agent, you can no longer enter mulitple items into a Restock Agent
  • Double-clicking on the list when viewing the Restock or Buy agents will popup the dialog to change the value (same behavior as clicking Edit) (11/20/18)


  • Razor will check the value of UODataDir in your config before looking to the registry, making it now fully portable and able to handle computers with multiple versions of UO installed. This should fix missing images in the titlebar on counters for some people.
  • Razor will try to be a little smarter when determining if it's offscreen and reset itself if it is.

More Options

  • If your container has a non-generic name (ie: holiday bags, special chests), you can set an alias so the container label will work on it.
  • Added an option to automatically block trades
  • Added an option to auto-accept party invites from friends
  • You can set an min/max light level. Be sure you have your Light Filter unchecked before using this feature.


  • Double-click GumpResponse to check button ID
  • Added Use Last Gump Response to macro options (ie: to update a macro using a runebook)

Hot Keys

  • Added a hotkey to interrupt spell casting (same effect as having a macro that picked up and equipped a pair of shoes).
  • You can now capture data from large and small BOD deeds. The file will be saved in a .csv file (BODs.csv) in the root path of Razor. (11/2/18)


  • Razor won't display extra systray icons
  • Manually typing in a server name will save it correctly to the config
  • Razor will correctly handle different sized maps
  • Razor will import your macros, profiles and counter.xml from %AppData%\Razor when you run it the first time and the ImportProfilesAndMacros is set to true in the config.
  • Razor will ignore if Window's font is zoomed (Windows 7 is 125% by default on some machines)
  • -ping command will give a litle more detail


  • You can now set the season in Razor that will display in the client. This will only change what you see.

More Options

  • You can now assign container labels to containers (chests, bags, etc) in UO. This label can be colored coded and set to help identify what is in the container.
  • Overhead messages can be changed from Unicode to ASCII (more classic look)


  • Absolute Targets will now save in the profile instead of a separate file.
  • Double-Clicking "If", Comments or "For Loops" should open the correct dialog
  • Added ability to edit speech in macros
  • Potential fix to WaitForGump action not working
  • After you add a macro via the clipboard, it will desolate your clipboard.


  • Create a new agent IgnoreList, this allows you to add people to the list and all messages (regular, yell, whisper, emotes), except for spells, will be blocked from displaying in UO. This includes being blocked from going into Razor's internal SysMessage queue to be used for macros.

Hot Keys

  • Add UseOnce Container should no longer crash Razor
  • Added Previous Target hotkeys to match the Next Target hotkeys
  • Organizer and Restock hotkeys sorting has been changed to be more clear (this will require mapping those hotkeys)
  • Instead of trying to figure out the monsters using mobtypes.txt, I changed the logic of targeting monsters to target anything that isn't human. This should prevent scenarios where it wouldn't target a monster using an animal model.


  • The backup profile/macros button should now work if a certain folder is missing.


  • {skill} timer will start when using skills directly in the client (9/26/18)


  • Captured MIBs display on screen
  • Boat uses your Razor speech text
  • Fixed Stop from adding slow or one
  • Fixed slow left from not responding (stubborn tillerman)


  • Added {buffsdebuffs} to display bar with timer countdown
  • Fixed {followers} and {maxfollowers}
  • Gold tracker now shows total minutes {goldtotalmin}
  • Gold tracker will start when you pick up your first gold pile if enabled
  • Added {uptime} to show how long you've been connected


  • Added option to block auto-opening corpses twice in a session

More Options

  • Buffs and debuffs can now be displayed over your head


  • Added Scavenger Enable/Disable, Scavenger Set Hot Bag and Scavenger Add Target
  • Added HotKey to trigger Gold tracker on or off


  • Fixed Advanced tab to show which features are enabled


  • Default Razor config will be taskbar instead of systray


  • Added option to do a range check on TargetByType
  • Added option to do a range check on DoubleClickTargetType
  • Fixed the WalkAction macro to no longer cause massive desync issues


  • You can now upload screenshots to Imgur from Razor for easy sharing. All images are uploaded anonymously and are not linked to any Imgur account.
  • Razor will keep a history of images uploaded, and store the delete hash so they can be deleted. (8/29/18)


  • I had a talk with the tillerman and he agreed to respond to your boat commands.


  • Party members who are out of range will continue to update their position on your map.
  • When using "Smart Always On Top", JMap will react like Razor and UOPS do when you unfocus the current UO client.
  • Added HotKey that will toggle JMap visible/hidden.
  • Fixed issue with MIB coords sometimes being negative.
  • Updating the X/Y changes now update markers correctly.
  • Marker X/Y accept proper inputs.
  • New MIB icons for mib x/y coords.
  • Fixed rendering offset with some markers
  • Mouse coords should now display correctly.
  • TMap and MIB Markers should now highlight their corresponding tile when hovered.


    Object delay has a checkbox. Unchecking it will set your delay to 0. You can still leave it enabled and enter 0. (8/24/18)

This version introduces a brand new UO mapping system referred to as JMap (designed by Jimmy the Hand), that will hopefully give those who use Razor's current map system system more functionality while giving those who use UOAM an option built directly into Razor. JMap is still in active development and this is the first public release. Please report any issues on the development thread.

This version also includes a new Overhead system that lets you trigger messages that are in the lower-left to appear overhead.


  • Updated the main UI to use the modern Windows theme if it's enabled. Looks much nicer now.
  • Sound filters for bulls, dragons and chickens.
  • Updated UI size and text size for all input forms.
  • Moved packet logging location to Razor directory
  • Added Save button to Profile (previously you could only save your profile by exiting out of UO completely)
  • Additional updates to Razor to make it fully portable. If the registry keys for UO are missing, it will default and use the UODataDir defined in the config. You should be able to copy/paste your UO folder and Razor to any location now.


  • Enabled JMap
  • Added stop and a close button to the Boat Control Window
  • Added MIB capture feature. When you open an MIB, it will write the X/Y coordinates to a file that can display in JMap.

Hot Keys

  • Added "Set Sell HotBag" hotkey
  • Added "Add UseContainer" hotkey


  • Added gold per second, minute and hour to titlebar. This can be enabled per session and tracked via adding {gps}, {gpm}, {gph} and {totalgold} to your display bar
  • Fixed skill timer ({skill} in the displaybar) to be more accurate

More Options

  • Added Overhead Message UI
  • Updated Force Screen Size checkbox to tell you to open options and click Apply instead of logging out and back in
  • Added option to put stealth count overhead (7/18/18)

  • Added light level bar to change in game
  • Unchecking the light filter will reset it
  • Added boat control UI and functionality (similar to UO Rudder)
  • Added initial Map tab for new map update, most features are not enabled
  • Added a hotkey to only show mobiles
  • Added a hotkey to only show corpses
  • Target Closest Gray Monster will include dire wolves and hellhounds.
  • Option to disable put self/last/clear target messages from being overhead
  • Added option to display stun messages overhead
  • Updated bundled counter.xml to include more useful items
  • Added feature to log your skill gains to a CSV file per character
  • Sound filters for bulls and dragons
  • Removed some responses from the -mobile command that didn't show data (5/18/18)

  • Updated the -mobile command to have some additional information
  • Add IsSeaMonster to each Mobile object
  • Fixed the Target Closest Gray Monster and Random Gray Monster to include Sea Monsters (sea serpents, etc)

  • Fixed issue with macros not opening up in the editor if they were in categories.
  • Added ability to step through a macro when playing (ie. for debugging)
  • Stepping through a macro now works from "Play From Here"
  • Added a button to disable SmartCPU for testing purposes
  • Added Hotkey to Pause current macro
  • Added the -item command to do the same as -hue

  • "Fixed" issue with missing Z axis on player. Compiling Crypt.dll with Optimizations would break it. Need more research but a current work around.
  • Additional check on disabling SmartCPU
  • Additional generic to non-generic array changes
  • Auto-open doors is default true in new profiles
  • Added by type protection based on @uoitalia's code
  • Added Target Next Enemy Humanoid
  • Added a checkbox to force different TargetByType targets. In other words, don't target the same type twice.
  • Added -clearitems and -resync commands. -clearitems is experimental to see if it addresses issues where items out of range are picked up
  • Added Cyclops and Titans sound filter
  • Deer Sound filter works correctly
  • Fixed issue with the Hotkeys filter no resetting when you left the tab and came back
  • You can open a macro externally to your default editor

  • Added Target Random Grey Monster
  • Added Target Random Enemy Monster
  • Added Target Closest Grey Monster
  • Added Target Closest Enemy Monster

  • Fixed issue with organizer agents not saving correctly (and thus not loading correctly)
  • Fixed issue with not being able to delete an absolute target when you had 1 left
  • Razor will remember the last server you picked
  • Additional validation on the OK button to be sure you selected a data dir and UO client
  • Added a few issues with getting PacketFilter errors on values that didn't exist.


  • Remove the auto-update feature check
  • Remove PayPal button on Razor splash
  • Popup windows for input should auto-focus and not require clicking in the text field first
  • Convert much of the old .NET Hashtables and Arraylists to hopefully improve with performance
  • Remove the use the DateTime.Now and use DateTime.UtcNow for the internal mechanism (DateTime.Now is 10 times slower than DateTime.UtcNow)
  • Added -hue command
  • Removed dependancy on InstallDir being in HKLM which should result in more people able to use Force Screen size. GetInstallDirectory now returns the folder the Razor.exe is running in.
  • Removed all dependancy on the HMCU for the registry. All settings are in App.config and all Profiles and Macros are expected to be the sub folder of Razor.exe
  • Additional UI adjustments


  • Completely remove the SmartCPU feature
  • Add Clone Profile button to easily create a copy of an existing profile instead of having to use the default
  • Add Checkbox to enable confirmation buttons on buttons that clear lists or delete things
  • Delete confirmation when you deleting a profile


  • Add {circle} to the Spell Format option to display, if you want, the circle the spell was casted from.


  • Copy macro to clipboard
  • New button to create macro from clipboard
  • Control-UP / Down to move macro line
  • Rename macro from UI
  • Double click macro action opens Edit dialog instead of having to right-click and Edit..
  • Adding a macro to a group should not require typing in the group name each time


  • Add confirmation box on Clear List


  • Add confirmation box on all clear buttons (so tired of accidently clicking clear instead of clear hotbag)


  • Filter by name to quickly find a hotkey


For a more comprehensive guide on how to use Razor, click here.

For a comprehensive guide on the Razor Scripting Engine, click here.

Installing Razor

This version of Razor doesn't use the Windows Registry or %AppData%\Razor to store configuration, macros and profiles. In other words, it's portable. To install, follow these simple steps:

  • Download the latest release
  • Extract into any location (ie: C:\UO\Razor)
  • (Optional) If you have an existing version of Razor, copy the Profiles and Macros folders from %AppData%\Razor into the folder you extracted the zip above to. If you have custom counters, also copy counters.xml over.
  • Right-Click on the Razor shortcut or Razor.exe, go to Properties. On the Compatibility tab, select Run this program in compatibility mode for and select Windows XP SP2.
  • Run Razor either via the shortcut or clicking the Razor.exe directly.
  • Razor should prompt to Run As Administrator. You must allow this for Razor to function correctly.


The first time Razor starts, you will get the Welcome window and an option to import your existing profiles and macros from %AppData%\Razor. From here, you can set some specific settings, mainly the location of client.exe and your UO data directory (usually the same location as client.exe)

  • Click Browse and select your Ultima Online client.exe
  • Be sure "Patch Client encryption" is checked and "Use OSI Encryption" is not checked.
  • Click Browse and select the data directory where your Ultima Online client files reside.
  • Select your server and click "OK"

Client Lockups and/or "Flashing"

Some users have reported the UO client will lock up and/or "flash" when using Razor. If you experience this, please do the following:

  • Close out of all running instances of Ultima Online and Razor.
  • Browse to your Ultima Online installation directory.
  • Find client.exe, right-click and go to Properties.
  • Under the Compatibility tab, check "Run this program in compatibility mode for" and select "Windows XP (Service Pack 2)"
  • Relaunch Ultima Online using Razor and confirm issue is resolved.

Forcing Screen Size

Follows these steps to force a larger window size within the UO client.

  • Check Force Game Size on the More Options tab and enter your desired X and Y sizes.
  • Personally, I find 1000x800 is a good balance between black corners and size. 1180x990 is the largest without screen tearing.
  • Open you Paperdoll (ALT-P) and click Options. Then click Apply.
  • If your screen doesn't adjust, you can try to log out and back in.

UOAM is not displaying the correct location

If the location is wrong in UOAM (or not tracking at all), follow these steps:

  • Go buy a sextant in game and use it
  • In UOAM, click UO->Calibrate
  • Enter your map, longitude and latitude and click OK

Removing Gray Corners

While not a feature of Razor, I've been asked a few times about the gray corners. You can remove the naively in the UO client by doing the following:

  • Log into your character and open your paperdoll
  • Click Options
  • Click the lower-left tab (Macro Options)
  • Click Add and under Actions, select "ToggleRangeColor" and set it to some key combo you will never use since this is a one-time thing (ie. CTRL-SHIFT-P)
  • Click Okay and hit the key combination you setup. The gray corners should disappear.
  • NOTE: Black corners and tearing based on your forced resolution will still exist.