CLI-like IDA plugin for lightning-fast struct member definition.
IDA does keyboard navigation very well, but struct workflows still involve too many steps. The typical flow:
- Open/switch to Local Types window
- Create new type or find existing one
- Set struct size
- Press
Gto navigate to offset - Define member type and name
- Close/switch windows
Structline collapses this into a single text input.
Press F and type MyStruct 10 int count
Done. You've just added int named count at offset 0x10 for struct MyStruct.
For the second member, it gets even faster:
- Highlight the offset in disassembly/decompiler (e.g.,
0x18or18(equivalent)) - Press
F - Input pre-fills:
MyStruct 18 - Type the rest:
QWORD ptr(optional)
Structline remembers your last struct, so adding multiple members becomes: highlight offset → F → type → Enter. Repeat.
Want to get rid of last struct ? Delete it from input box and close the window. You don't need to commit a change to get rid of it.
- Struct name detection: Auto-fills from decompiler lvar or highlighted text
- Last struct memory: Remembers your most recent struct for rapid multi-member editing (delete it from the input box remove it)
- Offset parsing: Grabs hex values under cursor when last struct is set
getting type from highlight token
getting type from lvar
- Auto-completion: Tab-complete struct names and all IDB types
- History: Per database history of previous commits. Cycle with up/down arrow
- Smart defaults: Omit member type →
_BYTE, omit member name →field_X
autocompletion
history (up/down arrow)
- Overlap preview: Tooltip shows which members will be overwritten before you commit
- Auto-deletion: Removes overlapped members automatically
- Name suffixing: Appends IDA-like
_1,_2suffix if member name exists - Undo support: Made mistake ? Use IDA's undo shortcut
collisions
- Instant struct creation: Define new structs on the fly (blue border)
- Auto-expand: Structures grow automatically to fit new members
- Type validation: Real-time feedback on type correctness
creating structs
Color coded border indicates input status:
- 🟢 Green: Valid
- 🟡 Yellow: Valid, will overwrite members
- 🔵 Blue: Valid, will create new struct
- 🔴 Red: Invalid
Press F and enter space-separated tokens:
struct_name offset [type] [name]
Examples:
MyStruct 0x10 int* some_size
MyStruct 20 DWORD[4] my_array → (0x20)
NewStruct 0 _QWORD* vft_ptr
Minimal input:
MyStruct 8 → MyStruct 8 _BYTE field_8
MyStruct 0x10 QWORD[4] → MyStruct 0x10 QWORD[4] field_10
- Enter: Commit change
- Escape: Close window
- Tab: Accept auto-completion
- Up/Down: Navigate history






